From aaa28583379338e37a1fe2f83bbc3b24c6d8deca Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 16 Jul 2024 12:25:19 -0700 Subject: [PATCH 001/118] battling with handling depreciation percentage and amount --- .../Controllers/DepreciationsController.php | 15 ++++++++++ app/Models/Depreciable.php | 20 ++++++++++--- ...recitation_type_to_depreciations_table.php | 28 +++++++++++++++++++ resources/views/depreciations/edit.blade.php | 8 ++++-- 4 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php diff --git a/app/Http/Controllers/DepreciationsController.php b/app/Http/Controllers/DepreciationsController.php index 57ad35fea..77a173581 100755 --- a/app/Http/Controllers/DepreciationsController.php +++ b/app/Http/Controllers/DepreciationsController.php @@ -63,6 +63,7 @@ class DepreciationsController extends Controller $depreciation->months = $request->input('months'); $depreciation->user_id = Auth::id(); $depreciation->depreciation_min = $request->input('depreciation_min'); + $depreciation->depreciation_type = $request->input('depreciation_type'); // Was the asset created? if ($depreciation->save()) { @@ -116,6 +117,20 @@ class DepreciationsController extends Controller // Depreciation data $depreciation->name = $request->input('name'); $depreciation->months = $request->input('months'); + + $request->validate([ + 'depreciation_min' => [ + 'required', + 'numeric', + function ($attribute, $value, $fail) use ($request) { + if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) { + $fail('The depreciation minimum must be between 0 and 100 when depreciation type is percentage.'); + } + }, + ], + 'depreciation_type' => 'required|in:amount,percent', + ]); + $depreciation->depreciation_type = $request->input('depreciation_type'); $depreciation->depreciation_min = $request->input('depreciation_min'); // Was the asset created? diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index 721135873..f5a29d790 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -67,7 +67,7 @@ class Depreciable extends SnipeModel * @return float|int */ public function getLinearDepreciatedValue() // TODO - for testing it might be nice to have an optional $relative_to param here, defaulted to 'now' - { + { ; if (($this->get_depreciation()) && ($this->purchase_date)) { $months_passed = ($this->purchase_date->diff(now())->m)+($this->purchase_date->diff(now())->y*12); } else { @@ -78,7 +78,7 @@ class Depreciable extends SnipeModel //if there is a floor use it if(!$this->get_depreciation()->depreciation_min == null) { - $current_value = $this->get_depreciation()->depreciation_min; + $current_value = $this->calculateDepreciation(); }else{ $current_value = 0; @@ -86,7 +86,7 @@ class Depreciable extends SnipeModel } else { // The equation here is (Purchase_Cost-Floor_min)*(Months_passed/Months_til_depreciated) - $current_value = round(($this->purchase_cost-($this->purchase_cost - ($this->get_depreciation()->depreciation_min)) * ($months_passed / $this->get_depreciation()->months)), 2); + $current_value = round(($this->purchase_cost-($this->purchase_cost - ($this->calculateDepreciation())) * ($months_passed / $this->get_depreciation()->months)), 2); } @@ -95,7 +95,7 @@ class Depreciable extends SnipeModel public function getMonthlyDepreciation(){ - return ($this->purchase_cost-$this->get_depreciation()->depreciation_min)/$this->get_depreciation()->months; + return ($this->purchase_cost-$this->calculateDepreciation())/$this->get_depreciation()->months; } @@ -188,4 +188,16 @@ class Depreciable extends SnipeModel { return new \DateTime($time); } + private function calculateDepreciation(){ + $depreciation_min = 0; + if($this->get_depreciation()->depreciation_type === 'percentage') { + $depreciation_percent= $this->get_depreciation()->depreciation_min / 100; + $depreciation_min= $this->purchase_cost * $depreciation_percent; + return $depreciation_min; + } + else{ + $depreciation_min = $this->get_depreciation()->depreciation_min; + return $depreciation_min; + } + } } diff --git a/database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php b/database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php new file mode 100644 index 000000000..1a5355f73 --- /dev/null +++ b/database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php @@ -0,0 +1,28 @@ +string('depreciation_type')->after('depreciation_min')->default('amount'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('depreciations', function (Blueprint $table) { + $table->dropColumn('depreciation_type'); + }); + } +}; diff --git a/resources/views/depreciations/edit.blade.php b/resources/views/depreciations/edit.blade.php index a5376ea69..fed28918e 100755 --- a/resources/views/depreciations/edit.blade.php +++ b/resources/views/depreciations/edit.blade.php @@ -28,8 +28,12 @@ -
- +
+ +
{!! $errors->first('depreciation_min', '') !!}
From 48821f8391f0e06ef3837496accc446d532f5637 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 16 Jul 2024 12:58:23 -0700 Subject: [PATCH 002/118] updates transformer, api controller --- app/Http/Controllers/Api/DepreciationsController.php | 4 ++-- app/Http/Transformers/DepreciationsTransformer.php | 3 ++- app/Models/Depreciable.php | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/DepreciationsController.php b/app/Http/Controllers/Api/DepreciationsController.php index 93088bb04..0209eae39 100644 --- a/app/Http/Controllers/Api/DepreciationsController.php +++ b/app/Http/Controllers/Api/DepreciationsController.php @@ -20,9 +20,9 @@ class DepreciationsController extends Controller public function index(Request $request) : JsonResponse | array { $this->authorize('view', Depreciation::class); - $allowed_columns = ['id','name','months','depreciation_min','created_at']; + $allowed_columns = ['id','name','months','depreciation_min', 'depreciation_type','created_at']; - $depreciations = Depreciation::select('id','name','months','depreciation_min','user_id','created_at','updated_at'); + $depreciations = Depreciation::select('id','name','months','depreciation_min','depreciation_type','user_id','created_at','updated_at'); if ($request->filled('search')) { $depreciations = $depreciations->TextSearch($request->input('search')); diff --git a/app/Http/Transformers/DepreciationsTransformer.php b/app/Http/Transformers/DepreciationsTransformer.php index 78a01b4c1..87e2ddaca 100644 --- a/app/Http/Transformers/DepreciationsTransformer.php +++ b/app/Http/Transformers/DepreciationsTransformer.php @@ -7,6 +7,7 @@ use App\Models\Depreciable; use App\Models\Depreciation; use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Support\Facades\Log; class DepreciationsTransformer { @@ -26,7 +27,7 @@ class DepreciationsTransformer 'id' => (int) $depreciation->id, 'name' => e($depreciation->name), 'months' => $depreciation->months.' '.trans('general.months'), - 'depreciation_min' => $depreciation->depreciation_min, + 'depreciation_min' => $depreciation->depreciation_type === 'percent' ? $depreciation->depreciation_min.'%' : $depreciation->depreciation_min, 'created_at' => Helper::getFormattedDateObject($depreciation->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($depreciation->updated_at, 'datetime') ]; diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index f5a29d790..540ebaf32 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -190,7 +190,7 @@ class Depreciable extends SnipeModel } private function calculateDepreciation(){ $depreciation_min = 0; - if($this->get_depreciation()->depreciation_type === 'percentage') { + if($this->get_depreciation()->depreciation_type === 'percent') { $depreciation_percent= $this->get_depreciation()->depreciation_min / 100; $depreciation_min= $this->purchase_cost * $depreciation_percent; return $depreciation_min; From 5bb47e290fe85e458ebba0ec7888020c9a35d5ba Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 16 Jul 2024 13:07:12 -0700 Subject: [PATCH 003/118] validates percentage on store and new depreciations --- app/Http/Controllers/DepreciationsController.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DepreciationsController.php b/app/Http/Controllers/DepreciationsController.php index 77a173581..549d676d0 100755 --- a/app/Http/Controllers/DepreciationsController.php +++ b/app/Http/Controllers/DepreciationsController.php @@ -62,8 +62,21 @@ class DepreciationsController extends Controller $depreciation->name = $request->input('name'); $depreciation->months = $request->input('months'); $depreciation->user_id = Auth::id(); - $depreciation->depreciation_min = $request->input('depreciation_min'); + + $request->validate([ + 'depreciation_min' => [ + 'required', + 'numeric', + function ($attribute, $value, $fail) use ($request) { + if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) { + $fail('The depreciation minimum must be between 0 and 100 when depreciation type is percentage.'); + } + }, + ], + 'depreciation_type' => 'required|in:amount,percent', + ]); $depreciation->depreciation_type = $request->input('depreciation_type'); + $depreciation->depreciation_min = $request->input('depreciation_min'); // Was the asset created? if ($depreciation->save()) { From ffaacc04efb2603d542b8d630711f27b6fed5894 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 16 Jul 2024 20:24:18 -0700 Subject: [PATCH 004/118] cleaned up calculateDepreciation method --- app/Models/Depreciable.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index 540ebaf32..d382a65d6 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -188,16 +188,16 @@ class Depreciable extends SnipeModel { return new \DateTime($time); } - private function calculateDepreciation(){ - $depreciation_min = 0; + + private function calculateDepreciation() + { if($this->get_depreciation()->depreciation_type === 'percent') { $depreciation_percent= $this->get_depreciation()->depreciation_min / 100; $depreciation_min= $this->purchase_cost * $depreciation_percent; return $depreciation_min; } - else{ - $depreciation_min = $this->get_depreciation()->depreciation_min; - return $depreciation_min; - } + + $depreciation_min = $this->get_depreciation()->depreciation_min; + return $depreciation_min; } } From baa7e7d5615893c6277e8af1d1daa7231232ba38 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 16 Jul 2024 20:27:38 -0700 Subject: [PATCH 005/118] clean up --- app/Models/Depreciable.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index d382a65d6..02b319eeb 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -67,7 +67,7 @@ class Depreciable extends SnipeModel * @return float|int */ public function getLinearDepreciatedValue() // TODO - for testing it might be nice to have an optional $relative_to param here, defaulted to 'now' - { ; + { if (($this->get_depreciation()) && ($this->purchase_date)) { $months_passed = ($this->purchase_date->diff(now())->m)+($this->purchase_date->diff(now())->y*12); } else { @@ -76,7 +76,7 @@ class Depreciable extends SnipeModel if ($months_passed >= $this->get_depreciation()->months){ //if there is a floor use it - if(!$this->get_depreciation()->depreciation_min == null) { + if((!$this->get_depreciation()->depreciation_min) === null) { $current_value = $this->calculateDepreciation(); From d01972bbe57501a3f53857c831c45c25d390eae3 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 23 Jul 2024 11:53:59 -0700 Subject: [PATCH 006/118] adds tests for amount and percent --- app/Models/Depreciable.php | 2 +- tests/Unit/DepreciationTest.php | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index 02b319eeb..c1452728c 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -76,7 +76,7 @@ class Depreciable extends SnipeModel if ($months_passed >= $this->get_depreciation()->months){ //if there is a floor use it - if((!$this->get_depreciation()->depreciation_min) === null) { + if($this->get_depreciation()->depreciation_min) { $current_value = $this->calculateDepreciation(); diff --git a/tests/Unit/DepreciationTest.php b/tests/Unit/DepreciationTest.php index 4dd842227..e07edc6be 100644 --- a/tests/Unit/DepreciationTest.php +++ b/tests/Unit/DepreciationTest.php @@ -1,10 +1,13 @@ assertEquals(5, $depreciation->models->count()); } + public function testDepreciationAmount() + { + $depreciation = Depreciation::factory()->create([ + 'depreciation_type' => 'amount', + 'depreciation_min' => 1000, + 'months'=> 36, + ]); + + $asset = Asset::factory() + ->laptopMbp() + ->create( + [ + 'category_id' => Category::factory()->assetLaptopCategory()->create(), + 'purchase_date' => now()->subDecade(), + 'purchase_cost' => 4000, + ]); + $asset->model->update([ + 'depreciation_id' => $depreciation->id, + ]); + + $asset->getLinearDepreciatedValue(); + + $this->assertEquals($depreciation->depreciation_min, $asset->getLinearDepreciatedValue()); + } + public function testDepreciationPercentage() + { + $depreciation = Depreciation::factory()->create([ + 'depreciation_type' => 'percent', + 'depreciation_min' => 50, + 'months'=> 36, + ]); + + $asset = Asset::factory() + ->laptopMbp() + ->create( + [ + 'category_id' => Category::factory()->assetLaptopCategory()->create(), + 'purchase_date' => now()->subDecade(), + 'purchase_cost' => 4000, + ]); + $asset->model->update([ + 'depreciation_id' => $depreciation->id, + ]); + + $asset->getLinearDepreciatedValue(); + + $this->assertEquals(2000, $asset->getLinearDepreciatedValue()); + } public function testADepreciationHasLicenses() { From 99741db645c22612e64c738140527f2aeaa43cc4 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 24 Jul 2024 11:24:30 -0700 Subject: [PATCH 007/118] adds status labels to confirmation emails --- app/Http/Controllers/Account/AcceptanceController.php | 2 ++ app/Notifications/AcceptanceAssetAcceptedNotification.php | 2 ++ app/Notifications/AcceptanceAssetDeclinedNotification.php | 2 ++ app/Notifications/CheckoutAssetNotification.php | 1 + .../views/notifications/markdown/asset-acceptance.blade.php | 3 +++ .../views/notifications/markdown/checkout-asset.blade.php | 3 +++ 6 files changed, 13 insertions(+) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 2c9d29fc1..cabd05633 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -218,6 +218,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, + 'item_status' => $item->assetstatus->name ?: '', 'eula' => $item->getEula(), 'note' => $request->input('note'), 'check_out_date' => Carbon::parse($acceptance->created_at)->format('Y-m-d'), @@ -308,6 +309,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, + 'item_status' => $item->assetstatus->name ?: '', 'note' => $request->input('note'), 'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'), 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, diff --git a/app/Notifications/AcceptanceAssetAcceptedNotification.php b/app/Notifications/AcceptanceAssetAcceptedNotification.php index db1555b57..7798dbc0d 100644 --- a/app/Notifications/AcceptanceAssetAcceptedNotification.php +++ b/app/Notifications/AcceptanceAssetAcceptedNotification.php @@ -24,6 +24,7 @@ class AcceptanceAssetAcceptedNotification extends Notification $this->item_tag = $params['item_tag']; $this->item_model = $params['item_model']; $this->item_serial = $params['item_serial']; + $this->item_status = $params['item_status']; $this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'date', false); $this->assigned_to = $params['assigned_to']; $this->note = $params['note']; @@ -65,6 +66,7 @@ class AcceptanceAssetAcceptedNotification extends Notification 'item_tag' => $this->item_tag, 'item_model' => $this->item_model, 'item_serial' => $this->item_serial, + 'item_status' => $this->item_status, 'note' => $this->note, 'accepted_date' => $this->accepted_date, 'assigned_to' => $this->assigned_to, diff --git a/app/Notifications/AcceptanceAssetDeclinedNotification.php b/app/Notifications/AcceptanceAssetDeclinedNotification.php index abdfbbf0c..0a9d6c211 100644 --- a/app/Notifications/AcceptanceAssetDeclinedNotification.php +++ b/app/Notifications/AcceptanceAssetDeclinedNotification.php @@ -24,6 +24,7 @@ class AcceptanceAssetDeclinedNotification extends Notification $this->item_tag = $params['item_tag']; $this->item_model = $params['item_model']; $this->item_serial = $params['item_serial']; + $this->item_status = $params['item_status']; $this->declined_date = Helper::getFormattedDateObject($params['declined_date'], 'date', false); $this->note = $params['note']; $this->assigned_to = $params['assigned_to']; @@ -63,6 +64,7 @@ class AcceptanceAssetDeclinedNotification extends Notification 'item_tag' => $this->item_tag, 'item_model' => $this->item_model, 'item_serial' => $this->item_serial, + 'item_status' => $this->item_status, 'note' => $this->note, 'declined_date' => $this->declined_date, 'assigned_to' => $this->assigned_to, diff --git a/app/Notifications/CheckoutAssetNotification.php b/app/Notifications/CheckoutAssetNotification.php index 1c8c901b5..7c9b6b2a8 100644 --- a/app/Notifications/CheckoutAssetNotification.php +++ b/app/Notifications/CheckoutAssetNotification.php @@ -209,6 +209,7 @@ public function toGoogleChat() [ 'item' => $this->item, 'admin' => $this->admin, + 'status' => $this->item->assetstatus(), 'note' => $this->note, 'target' => $this->target, 'fields' => $fields, diff --git a/resources/views/notifications/markdown/asset-acceptance.blade.php b/resources/views/notifications/markdown/asset-acceptance.blade.php index 93292375a..037e24c13 100644 --- a/resources/views/notifications/markdown/asset-acceptance.blade.php +++ b/resources/views/notifications/markdown/asset-acceptance.blade.php @@ -16,6 +16,9 @@ @if (isset($note)) | **{{ trans('general.notes') }}** | {{ $note }} | @endif +@if (isset($item_status)) + | **{{ trans('general.status') }}** | {{ $item_status }} | +@endif @if ((isset($item_tag)) && ($item_tag!='')) | **{{ trans('mail.asset_tag') }}** | {{ $item_tag }} | @endif diff --git a/resources/views/notifications/markdown/checkout-asset.blade.php b/resources/views/notifications/markdown/checkout-asset.blade.php index 4646cef48..b76e3e66a 100644 --- a/resources/views/notifications/markdown/checkout-asset.blade.php +++ b/resources/views/notifications/markdown/checkout-asset.blade.php @@ -31,6 +31,9 @@ @if (isset($last_checkout)) | **{{ trans('mail.checkout_date') }}** | {{ $last_checkout }} | @endif +@if (isset($status)) + | **{{ trans('general.status') }}** | {{ $status }} | +@endif @if ((isset($expected_checkin)) && ($expected_checkin!='')) | **{{ trans('mail.expecting_checkin_date') }}** | {{ $expected_checkin }} | @endif From d5c9fa823e5b029de126510f9bae5a972cce0e62 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 24 Jul 2024 11:39:33 -0700 Subject: [PATCH 008/118] adds translations --- app/Http/Controllers/DepreciationsController.php | 4 ++-- resources/lang/en-US/validation.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/DepreciationsController.php b/app/Http/Controllers/DepreciationsController.php index 549d676d0..c564cc98f 100755 --- a/app/Http/Controllers/DepreciationsController.php +++ b/app/Http/Controllers/DepreciationsController.php @@ -69,7 +69,7 @@ class DepreciationsController extends Controller 'numeric', function ($attribute, $value, $fail) use ($request) { if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) { - $fail('The depreciation minimum must be between 0 and 100 when depreciation type is percentage.'); + $fail(trans('validation.percent')); } }, ], @@ -137,7 +137,7 @@ class DepreciationsController extends Controller 'numeric', function ($attribute, $value, $fail) use ($request) { if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) { - $fail('The depreciation minimum must be between 0 and 100 when depreciation type is percentage.'); + $fail(trans('validation.percent')); } }, ], diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php index 05374e23a..45c501071 100644 --- a/resources/lang/en-US/validation.php +++ b/resources/lang/en-US/validation.php @@ -72,6 +72,7 @@ return [ 'not_in' => 'The selected :attribute is invalid.', 'numeric' => 'The :attribute must be a number.', 'present' => 'The :attribute field must be present.', + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', 'valid_regex' => 'That is not a valid regex. ', 'regex' => 'The :attribute format is invalid.', 'required' => 'The :attribute field is required.', From f05d8281f3a88ec3d60cc4c56ecf169dfc77f769 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 24 Jul 2024 12:06:56 -0700 Subject: [PATCH 009/118] fixes alignment for error msg --- resources/views/depreciations/edit.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/depreciations/edit.blade.php b/resources/views/depreciations/edit.blade.php index fed28918e..a281beebc 100755 --- a/resources/views/depreciations/edit.blade.php +++ b/resources/views/depreciations/edit.blade.php @@ -35,6 +35,6 @@ - {!! $errors->first('depreciation_min', '') !!} + {!! $errors->first('depreciation_min', '') !!} @stop From 950fff31ed3688910191ed1d6dfa85ed2a35c41d Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 24 Jul 2024 12:12:04 -0700 Subject: [PATCH 010/118] fix conflicts --- resources/lang/en-US/validation.php | 243 ++++++++++++++++++---------- 1 file changed, 157 insertions(+), 86 deletions(-) diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php index 45c501071..9bc432078 100644 --- a/resources/lang/en-US/validation.php +++ b/resources/lang/en-US/validation.php @@ -13,88 +13,149 @@ return [ | */ - '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, and dashes.', - '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' => 'The :attribute must be between :min - :max.', - 'file' => 'The :attribute must be between :min - :max kilobytes.', - 'string' => 'The :attribute must be between :min - :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', + 'accepted' => 'The :attribute field must be accepted.', + 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', + 'active_url' => 'The :attribute field must be a valid URL.', + 'after' => 'The :attribute field must be a date after :date.', + 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', + 'alpha' => 'The :attribute field must only contain letters.', + 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', + 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'array' => 'The :attribute field must be an array.', + 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', + 'before' => 'The :attribute field must be a date before :date.', + 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute field must have between :min and :max items.', + 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute field must be between :min and :max.', + 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid 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 format is invalid.', - 'exists' => 'The selected :attribute is invalid.', - 'file' => 'The :attribute must be a file.', - 'filled' => 'The :attribute field must have a value.', - 'image' => 'The :attribute must be an image.', + 'boolean' => 'The :attribute field must be true or false.', + 'can' => 'The :attribute field contains an unauthorized value.', + 'confirmed' => 'The :attribute field confirmation does not match.', + 'contains' => 'The :attribute field is missing a required value.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute field must be a valid date.', + 'date_equals' => 'The :attribute field must be a date equal to :date.', + 'date_format' => 'The :attribute field must match the format :format.', + 'decimal' => 'The :attribute field must have :decimal decimal places.', + 'declined' => 'The :attribute field must be declined.', + 'declined_if' => 'The :attribute field must be declined when :other is :value.', + 'different' => 'The :attribute field and :other must be different.', + 'digits' => 'The :attribute field must be :digits digits.', + 'digits_between' => 'The :attribute field must be between :min and :max digits.', + 'dimensions' => 'The :attribute field has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'doesnt_end_with' => 'The :attribute field must not end with one of the following: :values.', + 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', + 'email' => 'The :attribute field must be a valid email address.', + 'ends_with' => 'The :attribute field must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'extensions' => 'The :attribute field must have one of the following extensions: :values.', + 'file' => 'The :attribute field must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute field must have more than :value items.', + 'file' => 'The :attribute field must be greater than :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than :value.', + 'string' => 'The :attribute field must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute field must have :value items or more.', + 'file' => 'The :attribute field must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be greater than or equal to :value.', + 'string' => 'The :attribute field must be greater than or equal to :value characters.', + ], + 'hex_color' => 'The :attribute field must be a valid hexadecimal color.', + 'image' => 'The :attribute field must be an image.', 'import_field_empty' => 'The value for :fieldname cannot be null.', - '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.', - 'is_unique_department' => 'The :attribute must be unique to this Company Location', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field must exist in :other.', + 'integer' => 'The :attribute field must be an integer.', + 'ip' => 'The :attribute field must be a valid IP address.', + 'ipv4' => 'The :attribute field must be a valid IPv4 address.', + 'ipv6' => 'The :attribute field must be a valid IPv6 address.', + 'json' => 'The :attribute field must be a valid JSON string.', + 'list' => 'The :attribute field must be a list.', + 'lowercase' => 'The :attribute field must be lowercase.', + 'lt' => [ + 'array' => 'The :attribute field must have less than :value items.', + 'file' => 'The :attribute field must be less than :value kilobytes.', + 'numeric' => 'The :attribute field must be less than :value.', + 'string' => 'The :attribute field must be less than :value characters.', ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'mimetypes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - '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.', + 'lte' => [ + 'array' => 'The :attribute field must not have more than :value items.', + 'file' => 'The :attribute field must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute field must be less than or equal to :value.', + 'string' => 'The :attribute field must be less than or equal to :value characters.', ], - 'starts_with' => 'The :attribute must start with one of the following: :values.', - 'ends_with' => 'The :attribute must end with one of the following: :values.', - - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', - 'valid_regex' => 'That is not a valid regex. ', - '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 is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', + 'mac_address' => 'The :attribute field must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute field must not have more than :max items.', + 'file' => 'The :attribute field must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute field must not be greater than :max.', + 'string' => 'The :attribute field must not be greater than :max characters.', + ], + 'max_digits' => 'The :attribute field must not have more than :max digits.', + 'mimes' => 'The :attribute field must be a file of type: :values.', + 'mimetypes' => 'The :attribute field must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute field must have at least :min items.', + 'file' => 'The :attribute field must be at least :min kilobytes.', + 'numeric' => 'The :attribute field must be at least :min.', + 'string' => 'The :attribute field must be at least :min characters.', + ], + 'min_digits' => 'The :attribute field must have at least :min digits.', + 'missing' => 'The :attribute field must be missing.', + 'missing_if' => 'The :attribute field must be missing when :other is :value.', + 'missing_unless' => 'The :attribute field must be missing unless :other is :value.', + 'missing_with' => 'The :attribute field must be missing when :values is present.', + 'missing_with_all' => 'The :attribute field must be missing when :values are present.', + 'multiple_of' => 'The :attribute field must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute field format is invalid.', + 'numeric' => 'The :attribute field must be a number.', + 'password' => [ + 'letters' => 'The :attribute field must contain at least one letter.', + 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', + 'numbers' => 'The :attribute field must contain at least one number.', + 'symbols' => 'The :attribute field must contain at least one symbol.', + 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', + ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', + 'present_if' => 'The :attribute field must be present when :other is :value.', + 'present_unless' => 'The :attribute field must be present unless :other is :value.', + 'present_with' => 'The :attribute field must be present when :values is present.', + 'present_with_all' => 'The :attribute field must be present when :values are present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute field format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_if_accepted' => 'The :attribute field is required when :other is accepted.', + 'required_if_declined' => 'The :attribute field is required when :other is declined.', + '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' => '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.', + 'same' => 'The :attribute field must match :other.', + 'size' => [ + 'array' => 'The :attribute field must contain :size items.', + 'file' => 'The :attribute field must be :size kilobytes.', + 'numeric' => 'The :attribute field must be :size.', + 'string' => 'The :attribute field must be :size characters.', ], + 'starts_with' => 'The :attribute field must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', 'two_column_unique_undeleted' => 'The :attribute must be unique across :table1 and :table2. ', - 'unique' => 'The :attribute has already been taken.', - 'uploaded' => 'The :attribute failed to upload.', - 'url' => 'The :attribute format is invalid.', 'unique_undeleted' => 'The :attribute must be unique.', 'non_circular' => 'The :attribute must not create a circular reference.', 'not_array' => ':attribute cannot be an array.', @@ -103,12 +164,13 @@ return [ 'numbers' => 'Password must contain at least one number.', 'case_diff' => 'Password must use mixed case.', 'symbols' => 'Password must contain symbols.', - 'gte' => [ - 'numeric' => 'Value cannot be negative' - ], - 'checkboxes' => ':attribute contains invalid options.', - 'radio_buttons' => ':attribute is invalid.', - + 'timezone' => 'The :attribute field must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'uppercase' => 'The :attribute field must be uppercase.', + 'url' => 'The :attribute field must be a valid URL.', + 'ulid' => 'The :attribute field must be a valid ULID.', + 'uuid' => 'The :attribute field must be a valid UUID.', /* |-------------------------------------------------------------------------- @@ -130,7 +192,7 @@ return [ // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP - // people won't know how to format. + // people won't know how to format. 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', @@ -138,9 +200,10 @@ return [ 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', - - ], - + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', + 'invalid_value_in_field' => 'Invalid value included in this field', + ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes @@ -156,8 +219,16 @@ return [ /* |-------------------------------------------------------------------------- - | Generic Validation Messages + | Generic Validation Messages - we use these in the jquery validation where we don't have + | access to the :attribute |-------------------------------------------------------------------------- */ - 'invalid_value_in_field' => 'Invalid value included in this field', + + 'generic' => [ + 'invalid_value_in_field' => 'Invalid value included in this field', + 'required' => 'This field is required', + 'email' => 'Please enter a valid email address', + ], + + ]; From 7161b6416e3ac31d00062574b23e5205d50d8355 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Wed, 24 Jul 2024 14:16:42 -0700 Subject: [PATCH 011/118] Add failing test for accessories and consumables checkin --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 tests/Feature/Users/Ui/BulkDeleteUsersTest.php diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php new file mode 100644 index 000000000..96798aae1 --- /dev/null +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -0,0 +1,110 @@ +count(2)->create(); + [$userA, $userB] = User::factory()->count(2)->create(); + + // Add checkouts for multiple accessories to multiple users to get different ids in the mix + $this->attachAccessoryToUser($accessoryA, $userA); + $this->attachAccessoryToUser($accessoryA, $userB); + $this->attachAccessoryToUser($accessoryB, $userA); + $this->attachAccessoryToUser($accessoryB, $userB); + + $this->actingAs(User::factory()->editUsers()->create()) + ->post(route('users/bulksave'), [ + 'ids' => [ + $userA->id, + ], + 'status_id' => Statuslabel::factory()->create()->id, + ]) + ->assertRedirect(); + + // These assertions check against a bug where the wrong value from + // accessories_users was being populated in action_logs.item_id. + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userA->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => Accessory::class, + 'item_id' => $accessoryA->id, + ]); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userA->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => Accessory::class, + 'item_id' => $accessoryB->id, + ]); + } + + public function testConsumableCheckinsAreProperlyLogged() + { + [$consumableA, $consumableB] = Consumable::factory()->count(2)->create(); + [$userA, $userB] = User::factory()->count(2)->create(); + + // Add checkouts for multiple consumables to multiple users to get different ids in the mix + $this->attachConsumableToUser($consumableA, $userA); + $this->attachConsumableToUser($consumableA, $userB); + $this->attachConsumableToUser($consumableB, $userA); + $this->attachConsumableToUser($consumableB, $userB); + + $this->actingAs(User::factory()->editUsers()->create()) + ->post(route('users/bulksave'), [ + 'ids' => [ + $userA->id, + ], + 'status_id' => Statuslabel::factory()->create()->id, + ]) + ->assertRedirect(); + + // These assertions check against a bug where the wrong value from + // consumables_users was being populated in action_logs.item_id. + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userA->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => Consumable::class, + 'item_id' => $consumableA->id, + ]); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userA->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => Consumable::class, + 'item_id' => $consumableB->id, + ]); + } + + private function attachAccessoryToUser(Accessory $accessory, User $user): void + { + $accessory->users()->attach($accessory->id, [ + 'accessory_id' => $accessory->id, + 'assigned_to' => $user->id, + ]); + } + + private function attachConsumableToUser(Consumable $consumable, User $user): void + { + $consumable->users()->attach($consumable->id, [ + 'consumable_id' => $consumable->id, + 'assigned_to' => $user->id, + ]); + } +} From 44dbbeb608fe2cf8eb6dd514577ebc86f88da7e7 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Wed, 24 Jul 2024 14:17:49 -0700 Subject: [PATCH 012/118] Add accessory and consumable specific checkin methods --- .../Controllers/Users/BulkUsersController.php | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index b0683e2cb..fab13f3fa 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -16,6 +16,7 @@ use App\Models\Consumable; use App\Models\User; use Carbon\Carbon; use Illuminate\Http\Request; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Password; @@ -229,9 +230,9 @@ class BulkUsersController extends Controller $this->logItemCheckinAndDelete($assets, Asset::class); - $this->logItemCheckinAndDelete($accessories, Accessory::class); + $this->logAccessoriesCheckin($accessories); $this->logItemCheckinAndDelete($licenses, License::class); - $this->logItemCheckinAndDelete($consumables, Consumable::class); + $this->logConsumablesCheckin($consumables); Asset::whereIn('id', $assets->pluck('id'))->update([ @@ -279,7 +280,7 @@ class BulkUsersController extends Controller if ($itemType == License::class){ $item_id = $item->license_id; } - + $logAction->item_id = $item_id; // We can't rely on get_class here because the licenses/accessories fetched above are not eloquent models, but simply arrays. $logAction->item_type = $itemType; @@ -291,6 +292,34 @@ class BulkUsersController extends Controller } } + private function logAccessoriesCheckin(Collection $accessories): void + { + foreach ($accessories as $accessory) { + $logAction = new Actionlog(); + $logAction->item_id = $accessory->accessory_id; + $logAction->item_type = Accessory::class; + $logAction->target_id = $accessory->assigned_to; + $logAction->target_type = User::class; + $logAction->user_id = Auth::id(); + $logAction->note = 'Bulk checkin items'; + $logAction->logaction('checkin from'); + } + } + + private function logConsumablesCheckin(Collection $consumables): void + { + foreach ($consumables as $consumable) { + $logAction = new Actionlog(); + $logAction->item_id = $consumable->consumable_id; + $logAction->item_type = Consumable::class; + $logAction->target_id = $consumable->assigned_to; + $logAction->target_type = User::class; + $logAction->user_id = Auth::id(); + $logAction->note = 'Bulk checkin items'; + $logAction->logaction('checkin from'); + } + } + /** * Save bulk-edited users * From eb6f330e672429d9b40a168c493557048bd35aac Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 30 Jul 2024 09:38:39 -0700 Subject: [PATCH 013/118] adds status to check in and out --- app/Notifications/CheckinAssetNotification.php | 1 + app/Notifications/CheckoutAssetNotification.php | 2 +- resources/views/notifications/markdown/checkin-asset.blade.php | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/Notifications/CheckinAssetNotification.php b/app/Notifications/CheckinAssetNotification.php index 54b96777f..50745b1b2 100644 --- a/app/Notifications/CheckinAssetNotification.php +++ b/app/Notifications/CheckinAssetNotification.php @@ -162,6 +162,7 @@ class CheckinAssetNotification extends Notification $message = (new MailMessage)->markdown('notifications.markdown.checkin-asset', [ 'item' => $this->item, + 'status' => $this->item->assetstatus->name ?: '', 'admin' => $this->admin, 'note' => $this->note, 'target' => $this->target, diff --git a/app/Notifications/CheckoutAssetNotification.php b/app/Notifications/CheckoutAssetNotification.php index 7c9b6b2a8..352b088db 100644 --- a/app/Notifications/CheckoutAssetNotification.php +++ b/app/Notifications/CheckoutAssetNotification.php @@ -209,7 +209,7 @@ public function toGoogleChat() [ 'item' => $this->item, 'admin' => $this->admin, - 'status' => $this->item->assetstatus(), + 'status' => $this->item->assetstatus->name ?: '', 'note' => $this->note, 'target' => $this->target, 'fields' => $fields, diff --git a/resources/views/notifications/markdown/checkin-asset.blade.php b/resources/views/notifications/markdown/checkin-asset.blade.php index 74a438170..fd9afbd28 100644 --- a/resources/views/notifications/markdown/checkin-asset.blade.php +++ b/resources/views/notifications/markdown/checkin-asset.blade.php @@ -31,6 +31,9 @@ @if (isset($last_checkout)) | **{{ trans('mail.checkout_date') }}** | {{ $last_checkout }} | @endif +@if (isset($status)) + | **{{ trans('general.status') }}** | {{ $status }} | +@endif @foreach($fields as $field) @if (($item->{ $field->db_column_name() }!='') && ($field->show_in_email) && ($field->field_encrypted=='0')) | **{{ $field->name }}** | {{ $item->{ $field->db_column_name() } }} | From 8684a3efc3da03ce1f8dfc3ab014e5e2e90c89a7 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 30 Jul 2024 21:22:46 -0500 Subject: [PATCH 014/118] delete note, add trait to other request --- app/Http/Requests/Traits/MayContainCustomFields.php | 1 - app/Http/Requests/UpdateAssetRequest.php | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Requests/Traits/MayContainCustomFields.php b/app/Http/Requests/Traits/MayContainCustomFields.php index 50b239b60..1dd25dbe0 100644 --- a/app/Http/Requests/Traits/MayContainCustomFields.php +++ b/app/Http/Requests/Traits/MayContainCustomFields.php @@ -15,7 +15,6 @@ trait MayContainCustomFields $asset_model = AssetModel::find($this->model_id); } if ($this->method() == 'PATCH' || $this->method() == 'PUT') { - // this is dependent on the asset update request PR $asset_model = $this->asset; } // collect the custom fields in the request diff --git a/app/Http/Requests/UpdateAssetRequest.php b/app/Http/Requests/UpdateAssetRequest.php index cc23a65c4..a749e5816 100644 --- a/app/Http/Requests/UpdateAssetRequest.php +++ b/app/Http/Requests/UpdateAssetRequest.php @@ -2,12 +2,14 @@ namespace App\Http\Requests; +use App\Http\Requests\Traits\MayContainCustomFields; use App\Models\Asset; use Illuminate\Support\Facades\Gate; use Illuminate\Validation\Rule; class UpdateAssetRequest extends ImageUploadRequest { + use MayContainCustomFields; /** * Determine if the user is authorized to make this request. * From 9b80843c7759bd145ca2f516499af36648607ca4 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 30 Jul 2024 21:44:22 -0500 Subject: [PATCH 015/118] tests a little broken, added some nullchecks --- app/Http/Requests/Traits/MayContainCustomFields.php | 2 +- tests/Feature/Assets/Api/UpdateAssetTest.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Http/Requests/Traits/MayContainCustomFields.php b/app/Http/Requests/Traits/MayContainCustomFields.php index 1dd25dbe0..2feada177 100644 --- a/app/Http/Requests/Traits/MayContainCustomFields.php +++ b/app/Http/Requests/Traits/MayContainCustomFields.php @@ -24,7 +24,7 @@ trait MayContainCustomFields }); // if there are custom fields, find the one's that don't exist on the model's fieldset and add an error to the validator's error bag if (count($request_fields) > 0) { - $request_fields->diff($asset_model->fieldset->fields->pluck('db_column')) + $request_fields->diff($asset_model?->fieldset?->fields?->pluck('db_column')) ->each(function ($request_field_name) use ($request_fields, $validator) { if (CustomField::where('db_column', $request_field_name)->exists()) { $validator->errors()->add($request_field_name, trans('validation.custom.custom_field_not_found_on_model')); diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index db5893b4d..2a57d3839 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -269,6 +269,8 @@ class UpdateAssetTest extends TestCase { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); + // hmm, for some reason this customfield isn't attached to a fieldset + // need to check out these factory methods... $field = CustomField::factory()->testEncrypted()->create(); $asset = Asset::factory()->hasEncryptedCustomField($field)->create(); $superuser = User::factory()->superuser()->create(); From 0941c0944a68f1043b43325f47cd51bd88fa6111 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 30 Jul 2024 22:55:15 -0500 Subject: [PATCH 016/118] ok, found issue, but need to test some things now... --- app/Http/Requests/Traits/MayContainCustomFields.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Requests/Traits/MayContainCustomFields.php b/app/Http/Requests/Traits/MayContainCustomFields.php index 2feada177..9a7f85e3a 100644 --- a/app/Http/Requests/Traits/MayContainCustomFields.php +++ b/app/Http/Requests/Traits/MayContainCustomFields.php @@ -15,7 +15,7 @@ trait MayContainCustomFields $asset_model = AssetModel::find($this->model_id); } if ($this->method() == 'PATCH' || $this->method() == 'PUT') { - $asset_model = $this->asset; + $asset_model = $this->asset->model; } // collect the custom fields in the request $validator->after(function ($validator) use ($asset_model) { From b0063b1d4a0af2f78c3b7c4334256a89cfa661b0 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 31 Jul 2024 11:57:35 -0500 Subject: [PATCH 017/118] test written --- tests/Feature/Assets/Api/UpdateAssetTest.php | 25 ++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index 2a57d3839..499ea61f2 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -269,8 +269,6 @@ class UpdateAssetTest extends TestCase { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); - // hmm, for some reason this customfield isn't attached to a fieldset - // need to check out these factory methods... $field = CustomField::factory()->testEncrypted()->create(); $asset = Asset::factory()->hasEncryptedCustomField($field)->create(); $superuser = User::factory()->superuser()->create(); @@ -456,4 +454,27 @@ class UpdateAssetTest extends TestCase ]) ->assertStatusMessageIs('success'); } + + public function testCustomFieldCannotBeUpdatedIfNotOnCurrentAssetModel() + { + $customField = CustomField::factory()->create(); + $customField2 = CustomField::factory()->create(); + $asset = Asset::factory()->hasMultipleCustomFields([$customField])->create(); + $user = User::factory()->editAssets()->create(); + + // successful + $this->actingAsForApi($user)->patchJson(route('api.assets.update', $asset->id), [ + $customField->db_column_name() => 'test attribute', + ])->assertStatusMessageIs('success'); + + // custom field exists, but not on this asset model + $this->actingAsForApi($user)->patchJson(route('api.assets.update', $asset->id), [ + $customField2->db_column_name() => 'test attribute', + ])->assertStatusMessageIs('error'); + + // custom field does not exist + $this->actingAsForApi($user)->patchJson(route('api.assets.update', $asset->id), [ + '_snipeit_non_existent_custom_field_50' => 'test attribute', + ])->assertStatusMessageIs('error'); + } } From 61312c2eecf92951e63ea76a474b12e9b0ff2de5 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Wed, 31 Jul 2024 12:07:50 -0500 Subject: [PATCH 018/118] oops, mysql --- tests/Feature/Assets/Api/UpdateAssetTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index 499ea61f2..300d06ae5 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -457,6 +457,8 @@ class UpdateAssetTest extends TestCase public function testCustomFieldCannotBeUpdatedIfNotOnCurrentAssetModel() { + $this->markIncompleteIfMySQL('Custom Field Tests do not work in MySQL'); + $customField = CustomField::factory()->create(); $customField2 = CustomField::factory()->create(); $asset = Asset::factory()->hasMultipleCustomFields([$customField])->create(); From b6cac4baaef3f52be8c18f6068f3f1cf70caec9d Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 31 Jul 2024 12:03:36 -0700 Subject: [PATCH 019/118] corrects ? usage --- app/Http/Controllers/Account/AcceptanceController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index cabd05633..207932556 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -309,7 +309,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, - 'item_status' => $item->assetstatus->name ?: '', + 'item_status' => $item->assetstatus?->name, 'note' => $request->input('note'), 'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'), 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, From 854903805b54fb4d0d283f7de50c908b7e71386a Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 31 Jul 2024 12:16:41 -0700 Subject: [PATCH 020/118] one more spot --- app/Http/Controllers/Account/AcceptanceController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 207932556..6d84861fb 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -218,7 +218,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, - 'item_status' => $item->assetstatus->name ?: '', + 'item_status' => $item->assetstatus?->name, 'eula' => $item->getEula(), 'note' => $request->input('note'), 'check_out_date' => Carbon::parse($acceptance->created_at)->format('Y-m-d'), From ae4f278df15b1edf366f48dde11c6436e4777bd2 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 1 Aug 2024 11:13:20 -0700 Subject: [PATCH 021/118] edited terenaries on notifs --- app/Notifications/CheckinAssetNotification.php | 2 +- app/Notifications/CheckoutAssetNotification.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Notifications/CheckinAssetNotification.php b/app/Notifications/CheckinAssetNotification.php index 50745b1b2..77cd6d9b5 100644 --- a/app/Notifications/CheckinAssetNotification.php +++ b/app/Notifications/CheckinAssetNotification.php @@ -162,7 +162,7 @@ class CheckinAssetNotification extends Notification $message = (new MailMessage)->markdown('notifications.markdown.checkin-asset', [ 'item' => $this->item, - 'status' => $this->item->assetstatus->name ?: '', + 'status' => $this->item->assetstatus?->name, 'admin' => $this->admin, 'note' => $this->note, 'target' => $this->target, diff --git a/app/Notifications/CheckoutAssetNotification.php b/app/Notifications/CheckoutAssetNotification.php index 352b088db..5ebde7e4f 100644 --- a/app/Notifications/CheckoutAssetNotification.php +++ b/app/Notifications/CheckoutAssetNotification.php @@ -209,7 +209,7 @@ public function toGoogleChat() [ 'item' => $this->item, 'admin' => $this->admin, - 'status' => $this->item->assetstatus->name ?: '', + 'status' => $this->item->assetstatus?->name, 'note' => $this->note, 'target' => $this->target, 'fields' => $fields, From 78a0417ee9ae656afd37ef69c86b7ac368fbe9c4 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:11:18 -0700 Subject: [PATCH 022/118] Add another user into the mix --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 96798aae1..a88334e37 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -13,11 +13,13 @@ class BulkDeleteUsersTest extends TestCase public function testAccessoryCheckinsAreProperlyLogged() { [$accessoryA, $accessoryB] = Accessory::factory()->count(2)->create(); - [$userA, $userB] = User::factory()->count(2)->create(); + [$userA, $userB, $userC] = User::factory()->count(3)->create(); // Add checkouts for multiple accessories to multiple users to get different ids in the mix $this->attachAccessoryToUser($accessoryA, $userA); $this->attachAccessoryToUser($accessoryA, $userB); + $this->attachAccessoryToUser($accessoryA, $userC); + $this->attachAccessoryToUser($accessoryB, $userA); $this->attachAccessoryToUser($accessoryB, $userB); @@ -25,6 +27,7 @@ class BulkDeleteUsersTest extends TestCase ->post(route('users/bulksave'), [ 'ids' => [ $userA->id, + $userC->id, ], 'status_id' => Statuslabel::factory()->create()->id, ]) @@ -49,16 +52,27 @@ class BulkDeleteUsersTest extends TestCase 'item_type' => Accessory::class, 'item_id' => $accessoryB->id, ]); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userC->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => Accessory::class, + 'item_id' => $accessoryA->id, + ]); } public function testConsumableCheckinsAreProperlyLogged() { [$consumableA, $consumableB] = Consumable::factory()->count(2)->create(); - [$userA, $userB] = User::factory()->count(2)->create(); + [$userA, $userB, $userC] = User::factory()->count(3)->create(); // Add checkouts for multiple consumables to multiple users to get different ids in the mix $this->attachConsumableToUser($consumableA, $userA); $this->attachConsumableToUser($consumableA, $userB); + $this->attachConsumableToUser($consumableA, $userC); + $this->attachConsumableToUser($consumableB, $userA); $this->attachConsumableToUser($consumableB, $userB); @@ -66,6 +80,7 @@ class BulkDeleteUsersTest extends TestCase ->post(route('users/bulksave'), [ 'ids' => [ $userA->id, + $userC->id, ], 'status_id' => Statuslabel::factory()->create()->id, ]) @@ -90,6 +105,15 @@ class BulkDeleteUsersTest extends TestCase 'item_type' => Consumable::class, 'item_id' => $consumableB->id, ]); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userC->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => Consumable::class, + 'item_id' => $consumableA->id, + ]); } private function attachAccessoryToUser(Accessory $accessory, User $user): void From 480e4f3a691e9ccc6ea7159c632e2062299a0c1c Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:16:40 -0700 Subject: [PATCH 023/118] Improve readability --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index a88334e37..36526318e 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -16,12 +16,8 @@ class BulkDeleteUsersTest extends TestCase [$userA, $userB, $userC] = User::factory()->count(3)->create(); // Add checkouts for multiple accessories to multiple users to get different ids in the mix - $this->attachAccessoryToUser($accessoryA, $userA); - $this->attachAccessoryToUser($accessoryA, $userB); - $this->attachAccessoryToUser($accessoryA, $userC); - - $this->attachAccessoryToUser($accessoryB, $userA); - $this->attachAccessoryToUser($accessoryB, $userB); + $this->attachAccessoryToUsers($accessoryA, [$userA, $userB, $userC]); + $this->attachAccessoryToUsers($accessoryB, [$userA, $userB]); $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ @@ -69,12 +65,8 @@ class BulkDeleteUsersTest extends TestCase [$userA, $userB, $userC] = User::factory()->count(3)->create(); // Add checkouts for multiple consumables to multiple users to get different ids in the mix - $this->attachConsumableToUser($consumableA, $userA); - $this->attachConsumableToUser($consumableA, $userB); - $this->attachConsumableToUser($consumableA, $userC); - - $this->attachConsumableToUser($consumableB, $userA); - $this->attachConsumableToUser($consumableB, $userB); + $this->attachConsumableToUsers($consumableA, [$userA, $userB, $userC]); + $this->attachConsumableToUsers($consumableB, [$userA, $userB]); $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ @@ -116,19 +108,23 @@ class BulkDeleteUsersTest extends TestCase ]); } - private function attachAccessoryToUser(Accessory $accessory, User $user): void + private function attachAccessoryToUsers(Accessory $accessory, array $users): void { - $accessory->users()->attach($accessory->id, [ - 'accessory_id' => $accessory->id, - 'assigned_to' => $user->id, - ]); + foreach ($users as $user) { + $accessory->users()->attach($accessory->id, [ + 'accessory_id' => $accessory->id, + 'assigned_to' => $user->id, + ]); + } } - private function attachConsumableToUser(Consumable $consumable, User $user): void + private function attachConsumableToUsers(Consumable $consumable, array $users): void { - $consumable->users()->attach($consumable->id, [ - 'consumable_id' => $consumable->id, - 'assigned_to' => $user->id, - ]); + foreach ($users as $user) { + $consumable->users()->attach($consumable->id, [ + 'consumable_id' => $consumable->id, + 'assigned_to' => $user->id, + ]); + } } } From bfebcdc7ed3e6b126259d09999ff78a9eb253c07 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:22:35 -0700 Subject: [PATCH 024/118] Improve variable name --- .../Controllers/Users/BulkUsersController.php | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index fab13f3fa..81b19b1c5 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -220,20 +220,18 @@ class BulkUsersController extends Controller $users = User::whereIn('id', $user_raw_array)->get(); $assets = Asset::whereIn('assigned_to', $user_raw_array)->where('assigned_type', \App\Models\User::class)->get(); - $accessories = DB::table('accessories_users')->whereIn('assigned_to', $user_raw_array)->get(); + $accessoryUserRows = DB::table('accessories_users')->whereIn('assigned_to', $user_raw_array)->get(); $licenses = DB::table('license_seats')->whereIn('assigned_to', $user_raw_array)->get(); - $consumables = DB::table('consumables_users')->whereIn('assigned_to', $user_raw_array)->get(); + $consumableUserRows = DB::table('consumables_users')->whereIn('assigned_to', $user_raw_array)->get(); if ((($assets->count() > 0) && ((!$request->filled('status_id')) || ($request->input('status_id') == '')))) { return redirect()->route('users.index')->with('error', 'No status selected'); } - $this->logItemCheckinAndDelete($assets, Asset::class); - $this->logAccessoriesCheckin($accessories); + $this->logAccessoriesCheckin($accessoryUserRows); $this->logItemCheckinAndDelete($licenses, License::class); - $this->logConsumablesCheckin($consumables); - + $this->logConsumablesCheckin($consumableUserRows); Asset::whereIn('id', $assets->pluck('id'))->update([ 'status_id' => e(request('status_id')), @@ -244,7 +242,7 @@ class BulkUsersController extends Controller LicenseSeat::whereIn('id', $licenses->pluck('id'))->update(['assigned_to' => null]); - ConsumableAssignment::whereIn('id', $consumables->pluck('id'))->delete(); + ConsumableAssignment::whereIn('id', $consumableUserRows->pluck('id'))->delete(); foreach ($users as $user) { @@ -292,13 +290,13 @@ class BulkUsersController extends Controller } } - private function logAccessoriesCheckin(Collection $accessories): void + private function logAccessoriesCheckin(Collection $accessoryUserRows): void { - foreach ($accessories as $accessory) { + foreach ($accessoryUserRows as $accessoryUserRow) { $logAction = new Actionlog(); - $logAction->item_id = $accessory->accessory_id; + $logAction->item_id = $accessoryUserRow->accessory_id; $logAction->item_type = Accessory::class; - $logAction->target_id = $accessory->assigned_to; + $logAction->target_id = $accessoryUserRow->assigned_to; $logAction->target_type = User::class; $logAction->user_id = Auth::id(); $logAction->note = 'Bulk checkin items'; @@ -306,13 +304,13 @@ class BulkUsersController extends Controller } } - private function logConsumablesCheckin(Collection $consumables): void + private function logConsumablesCheckin(Collection $consumableUserRows): void { - foreach ($consumables as $consumable) { + foreach ($consumableUserRows as $consumableUserRow) { $logAction = new Actionlog(); - $logAction->item_id = $consumable->consumable_id; + $logAction->item_id = $consumableUserRow->consumable_id; $logAction->item_type = Consumable::class; - $logAction->target_id = $consumable->assigned_to; + $logAction->target_id = $consumableUserRow->assigned_to; $logAction->target_type = User::class; $logAction->user_id = Auth::id(); $logAction->note = 'Bulk checkin items'; From 364775dcfe8a4e9fa8d4908456cf71fc49462354 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:42:03 -0700 Subject: [PATCH 025/118] Improve readability --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 71 +++++-------------- 1 file changed, 19 insertions(+), 52 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 36526318e..2da5cd907 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -6,6 +6,7 @@ use App\Models\Accessory; use App\Models\Consumable; use App\Models\Statuslabel; use App\Models\User; +use Illuminate\Database\Eloquent\Model; use Tests\TestCase; class BulkDeleteUsersTest extends TestCase @@ -31,32 +32,9 @@ class BulkDeleteUsersTest extends TestCase // These assertions check against a bug where the wrong value from // accessories_users was being populated in action_logs.item_id. - $this->assertDatabaseHas('action_logs', [ - 'action_type' => 'checkin from', - 'target_id' => $userA->id, - 'target_type' => User::class, - 'note' => 'Bulk checkin items', - 'item_type' => Accessory::class, - 'item_id' => $accessoryA->id, - ]); - - $this->assertDatabaseHas('action_logs', [ - 'action_type' => 'checkin from', - 'target_id' => $userA->id, - 'target_type' => User::class, - 'note' => 'Bulk checkin items', - 'item_type' => Accessory::class, - 'item_id' => $accessoryB->id, - ]); - - $this->assertDatabaseHas('action_logs', [ - 'action_type' => 'checkin from', - 'target_id' => $userC->id, - 'target_type' => User::class, - 'note' => 'Bulk checkin items', - 'item_type' => Accessory::class, - 'item_id' => $accessoryA->id, - ]); + $this->assertActionLogCheckInEntryFor($userA, $accessoryA); + $this->assertActionLogCheckInEntryFor($userA, $accessoryB); + $this->assertActionLogCheckInEntryFor($userC, $accessoryA); } public function testConsumableCheckinsAreProperlyLogged() @@ -80,32 +58,9 @@ class BulkDeleteUsersTest extends TestCase // These assertions check against a bug where the wrong value from // consumables_users was being populated in action_logs.item_id. - $this->assertDatabaseHas('action_logs', [ - 'action_type' => 'checkin from', - 'target_id' => $userA->id, - 'target_type' => User::class, - 'note' => 'Bulk checkin items', - 'item_type' => Consumable::class, - 'item_id' => $consumableA->id, - ]); - - $this->assertDatabaseHas('action_logs', [ - 'action_type' => 'checkin from', - 'target_id' => $userA->id, - 'target_type' => User::class, - 'note' => 'Bulk checkin items', - 'item_type' => Consumable::class, - 'item_id' => $consumableB->id, - ]); - - $this->assertDatabaseHas('action_logs', [ - 'action_type' => 'checkin from', - 'target_id' => $userC->id, - 'target_type' => User::class, - 'note' => 'Bulk checkin items', - 'item_type' => Consumable::class, - 'item_id' => $consumableA->id, - ]); + $this->assertActionLogCheckInEntryFor($userA, $consumableA); + $this->assertActionLogCheckInEntryFor($userA, $consumableB); + $this->assertActionLogCheckInEntryFor($userC, $consumableA); } private function attachAccessoryToUsers(Accessory $accessory, array $users): void @@ -127,4 +82,16 @@ class BulkDeleteUsersTest extends TestCase ]); } } + + private function assertActionLogCheckInEntryFor(User $user, Model $model): void + { + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $user->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => get_class($model), + 'item_id' => $model->id, + ]); + } } From 4ed3347f52295b73876bfb6a103d987956b5224c Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:43:38 -0700 Subject: [PATCH 026/118] Add permission check --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 2da5cd907..cf283ad4c 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -11,6 +11,18 @@ use Tests\TestCase; class BulkDeleteUsersTest extends TestCase { + public function testRequiresCorrectPermission() + { + $this->actingAs(User::factory()->create()) + ->post(route('users/bulksave'), [ + 'ids' => [ + User::factory()->create()->id, + ], + 'status_id' => Statuslabel::factory()->create()->id, + ]) + ->assertForbidden(); + } + public function testAccessoryCheckinsAreProperlyLogged() { [$accessoryA, $accessoryB] = Accessory::factory()->count(2)->create(); From 5ecdb7e07c1727af1aa5ceb377d4918e2ffdcf54 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:50:09 -0700 Subject: [PATCH 027/118] Add validation test --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index cf283ad4c..01e16d502 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -3,6 +3,7 @@ namespace Tests\Feature\Users\Ui; use App\Models\Accessory; +use App\Models\Asset; use App\Models\Consumable; use App\Models\Statuslabel; use App\Models\User; @@ -23,6 +24,31 @@ class BulkDeleteUsersTest extends TestCase ->assertForbidden(); } + public function testValidation() + { + // $this->markTestIncomplete(); + $user = User::factory()->create(); + Asset::factory()->assignedToUser($user)->create(); + + $actor = $this->actingAs(User::factory()->editUsers()->create()); + + // "ids" required + $actor->post(route('users/bulksave'), [ + // 'ids' => [ + // $user->id, + // ], + 'status_id' => Statuslabel::factory()->create()->id, + ])->assertSessionHas('error')->assertRedirect(); + + // "status_id" needed when provided users have assets associated + $actor->post(route('users/bulksave'), [ + 'ids' => [ + $user->id, + ], + // 'status_id' => Statuslabel::factory()->create()->id, + ])->assertSessionHas('error')->assertRedirect(); + } + public function testAccessoryCheckinsAreProperlyLogged() { [$accessoryA, $accessoryB] = Accessory::factory()->count(2)->create(); From e3049fffd42baf54f8cbaad29933e45a398ce4b2 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 15:50:53 -0700 Subject: [PATCH 028/118] Remove comment --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 01e16d502..6b4621daf 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -26,7 +26,6 @@ class BulkDeleteUsersTest extends TestCase public function testValidation() { - // $this->markTestIncomplete(); $user = User::factory()->create(); Asset::factory()->assignedToUser($user)->create(); From b06501dd0288938e5533fd7950603a837678a558 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:02:59 -0700 Subject: [PATCH 029/118] Add assertions --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 6b4621daf..be5af79e0 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -48,7 +48,7 @@ class BulkDeleteUsersTest extends TestCase ])->assertSessionHas('error')->assertRedirect(); } - public function testAccessoryCheckinsAreProperlyLogged() + public function testAccessoriesCanBeBulkCheckedIn() { [$accessoryA, $accessoryB] = Accessory::factory()->count(2)->create(); [$userA, $userB, $userC] = User::factory()->count(3)->create(); @@ -57,6 +57,10 @@ class BulkDeleteUsersTest extends TestCase $this->attachAccessoryToUsers($accessoryA, [$userA, $userB, $userC]); $this->attachAccessoryToUsers($accessoryB, [$userA, $userB]); + $this->assertTrue($userA->accessories->isNotEmpty()); + $this->assertTrue($userB->accessories->isNotEmpty()); + $this->assertTrue($userC->accessories->isNotEmpty()); + $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ 'ids' => [ @@ -67,6 +71,10 @@ class BulkDeleteUsersTest extends TestCase ]) ->assertRedirect(); + $this->assertTrue($userA->fresh()->accessories->isEmpty()); + $this->assertTrue($userB->fresh()->accessories->isNotEmpty()); + $this->assertTrue($userC->fresh()->accessories->isEmpty()); + // These assertions check against a bug where the wrong value from // accessories_users was being populated in action_logs.item_id. $this->assertActionLogCheckInEntryFor($userA, $accessoryA); @@ -74,7 +82,7 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $accessoryA); } - public function testConsumableCheckinsAreProperlyLogged() + public function testConsumablesCanBeBulkCheckedIn() { [$consumableA, $consumableB] = Consumable::factory()->count(2)->create(); [$userA, $userB, $userC] = User::factory()->count(3)->create(); @@ -83,6 +91,10 @@ class BulkDeleteUsersTest extends TestCase $this->attachConsumableToUsers($consumableA, [$userA, $userB, $userC]); $this->attachConsumableToUsers($consumableB, [$userA, $userB]); + $this->assertTrue($userA->consumables->isNotEmpty()); + $this->assertTrue($userB->consumables->isNotEmpty()); + $this->assertTrue($userC->consumables->isNotEmpty()); + $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ 'ids' => [ @@ -93,6 +105,10 @@ class BulkDeleteUsersTest extends TestCase ]) ->assertRedirect(); + $this->assertTrue($userA->fresh()->consumables->isEmpty()); + $this->assertTrue($userB->fresh()->consumables->isNotEmpty()); + $this->assertTrue($userC->fresh()->consumables->isEmpty()); + // These assertions check against a bug where the wrong value from // consumables_users was being populated in action_logs.item_id. $this->assertActionLogCheckInEntryFor($userA, $consumableA); From 67b3ab820fbebd16e40661654a98e4d60d3f2c46 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:10:08 -0700 Subject: [PATCH 030/118] Add todo comments --- app/Http/Controllers/Users/BulkUsersController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index 81b19b1c5..c2cc8607f 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -247,7 +247,9 @@ class BulkUsersController extends Controller foreach ($users as $user) { + // @todo: This can be deleted since we have ConsumableAssignment above right? $user->consumables()->sync([]); + // @todo: Can this be removed if we introduce AccessoryAssignment? $user->accessories()->sync([]); if ($request->input('delete_user')=='1') { $user->delete(); From 8a206a6d92441873085f0d112856c79748655275 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:10:12 -0700 Subject: [PATCH 031/118] Add assertion --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index be5af79e0..8a9d24bae 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -116,6 +116,25 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $consumableA); } + public function testUsersCanBeDeletedInBulk() + { + [$userA, $userB, $userC] = User::factory()->count(3)->create(); + + $this->actingAs(User::factory()->editUsers()->create()) + ->post(route('users/bulksave'), [ + 'ids' => [ + $userA->id, + $userC->id, + ], + 'delete_user' => '1', + ]) + ->assertRedirect(); + + $this->assertSoftDeleted($userA); + $this->assertNotSoftDeleted($userB); + $this->assertSoftDeleted($userC); + } + private function attachAccessoryToUsers(Accessory $accessory, array $users): void { foreach ($users as $user) { From 5786ff5035a7fa48648dd70d26c655f9635124ee Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:11:07 -0700 Subject: [PATCH 032/118] Add assertion for success message --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 8a9d24bae..f321e011f 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -128,7 +128,8 @@ class BulkDeleteUsersTest extends TestCase ], 'delete_user' => '1', ]) - ->assertRedirect(); + ->assertRedirect() + ->assertSessionHas('success', trans('general.bulk_checkin_delete_success')); $this->assertSoftDeleted($userA); $this->assertNotSoftDeleted($userB); From fc405d9d730c949ea368fc7c192cb992b17fbebc Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:14:01 -0700 Subject: [PATCH 033/118] Assert redirected to correct place --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index f321e011f..8d6ca61d5 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -69,7 +69,7 @@ class BulkDeleteUsersTest extends TestCase ], 'status_id' => Statuslabel::factory()->create()->id, ]) - ->assertRedirect(); + ->assertRedirect(route('users.index')); $this->assertTrue($userA->fresh()->accessories->isEmpty()); $this->assertTrue($userB->fresh()->accessories->isNotEmpty()); @@ -103,7 +103,7 @@ class BulkDeleteUsersTest extends TestCase ], 'status_id' => Statuslabel::factory()->create()->id, ]) - ->assertRedirect(); + ->assertRedirect(route('users.index')); $this->assertTrue($userA->fresh()->consumables->isEmpty()); $this->assertTrue($userB->fresh()->consumables->isNotEmpty()); @@ -128,7 +128,7 @@ class BulkDeleteUsersTest extends TestCase ], 'delete_user' => '1', ]) - ->assertRedirect() + ->assertRedirect(route('users.index')) ->assertSessionHas('success', trans('general.bulk_checkin_delete_success')); $this->assertSoftDeleted($userA); From 5cd9dd4a679ec0f809aa0cadcbe4b5b809af60fe Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:17:24 -0700 Subject: [PATCH 034/118] Add assertion to ensure user cannot perform bulk actions on self --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 8d6ca61d5..fad4dee83 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -48,6 +48,23 @@ class BulkDeleteUsersTest extends TestCase ])->assertSessionHas('error')->assertRedirect(); } + public function testCannotPerformBulkActionsOnSelf() + { + $actor = User::factory()->editUsers()->create(); + + $this->actingAs($actor) + ->post(route('users/bulksave'), [ + 'ids' => [ + $actor->id, + ], + 'delete_user' => '1', + ]) + ->assertRedirect(route('users.index')) + ->assertSessionHas('success', trans('general.bulk_checkin_delete_success')); + + $this->assertNotSoftDeleted($actor); + } + public function testAccessoriesCanBeBulkCheckedIn() { [$accessoryA, $accessoryB] = Accessory::factory()->count(2)->create(); From d1bb3ef6bf96babf845c44c6bb33284eacd70305 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:19:09 -0700 Subject: [PATCH 035/118] Scaffold two tests --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index fad4dee83..4048f50b4 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -99,6 +99,14 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $accessoryA); } + public function testAssetsCanBeBulkCheckedIn() + { + $this->markTestIncomplete(); + + // @todo: + // $this->assertActionLogCheckInEntryFor(); ... + } + public function testConsumablesCanBeBulkCheckedIn() { [$consumableA, $consumableB] = Consumable::factory()->count(2)->create(); @@ -133,6 +141,14 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $consumableA); } + public function testLicenseSeatsCanBeBulkCheckedIn() + { + $this->markTestIncomplete(); + + // @todo: + // $this->assertActionLogCheckInEntryFor(); ... + } + public function testUsersCanBeDeletedInBulk() { [$userA, $userB, $userC] = User::factory()->count(3)->create(); From 16aa47509b3f655f6a9e2497ed38278c4fd7a702 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:24:52 -0700 Subject: [PATCH 036/118] Implement test for assets --- .../Feature/Users/Ui/BulkDeleteUsersTest.php | 35 +++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 4048f50b4..8787e849e 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -101,10 +101,34 @@ class BulkDeleteUsersTest extends TestCase public function testAssetsCanBeBulkCheckedIn() { - $this->markTestIncomplete(); + // $this->markTestIncomplete(); - // @todo: - // $this->assertActionLogCheckInEntryFor(); ... + [$userA, $userB, $userC] = User::factory()->count(3)->create(); + + $assetA = $this->assignAssetToUser($userA); + $assetB = $this->assignAssetToUser($userB); + $assetC = $this->assignAssetToUser($userC); + + $this->assertTrue($userA->assets->isNotEmpty()); + $this->assertTrue($userB->assets->isNotEmpty()); + $this->assertTrue($userC->assets->isNotEmpty()); + + $this->actingAs(User::factory()->editUsers()->create()) + ->post(route('users/bulksave'), [ + 'ids' => [ + $userA->id, + $userC->id, + ], + 'status_id' => Statuslabel::factory()->create()->id, + ]) + ->assertRedirect(route('users.index')); + + $this->assertTrue($userA->fresh()->assets->isEmpty()); + $this->assertTrue($userB->fresh()->assets->isNotEmpty()); + $this->assertTrue($userC->fresh()->assets->isEmpty()); + + $this->assertActionLogCheckInEntryFor($userA, $assetA); + $this->assertActionLogCheckInEntryFor($userC, $assetC); } public function testConsumablesCanBeBulkCheckedIn() @@ -200,4 +224,9 @@ class BulkDeleteUsersTest extends TestCase 'item_id' => $model->id, ]); } + + private function assignAssetToUser(User $user): Asset + { + return Asset::factory()->assignedToUser($user)->create(); + } } From 59b7d5db4b47a9f5c74312c9a79cf3317cbcebd6 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:25:14 -0700 Subject: [PATCH 037/118] Remove comment --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index 8787e849e..e17ee770b 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -101,8 +101,6 @@ class BulkDeleteUsersTest extends TestCase public function testAssetsCanBeBulkCheckedIn() { - // $this->markTestIncomplete(); - [$userA, $userB, $userC] = User::factory()->count(3)->create(); $assetA = $this->assignAssetToUser($userA); From 1acd24fdbe81dbabe547ef41899a109fd3879155 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:26:25 -0700 Subject: [PATCH 038/118] Re-order helpers --- tests/Feature/Users/Ui/BulkDeleteUsersTest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php index e17ee770b..4fab86d46 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkDeleteUsersTest.php @@ -191,6 +191,11 @@ class BulkDeleteUsersTest extends TestCase $this->assertSoftDeleted($userC); } + private function assignAssetToUser(User $user): Asset + { + return Asset::factory()->assignedToUser($user)->create(); + } + private function attachAccessoryToUsers(Accessory $accessory, array $users): void { foreach ($users as $user) { @@ -222,9 +227,4 @@ class BulkDeleteUsersTest extends TestCase 'item_id' => $model->id, ]); } - - private function assignAssetToUser(User $user): Asset - { - return Asset::factory()->assignedToUser($user)->create(); - } } From a55693211f8f5ea1e3dd9046bd0f0be184a2afad Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:27:04 -0700 Subject: [PATCH 039/118] Move test class --- .../Feature/Users/Ui/{ => BulkActions}/BulkDeleteUsersTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename tests/Feature/Users/Ui/{ => BulkActions}/BulkDeleteUsersTest.php (99%) diff --git a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php similarity index 99% rename from tests/Feature/Users/Ui/BulkDeleteUsersTest.php rename to tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php index 4fab86d46..bc5e50b5f 100644 --- a/tests/Feature/Users/Ui/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php @@ -1,6 +1,6 @@ Date: Mon, 5 Aug 2024 16:36:29 -0700 Subject: [PATCH 040/118] Improve readability --- .../Ui/BulkActions/BulkDeleteUsersTest.php | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php index bc5e50b5f..f9f1c27de 100644 --- a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php @@ -74,10 +74,6 @@ class BulkDeleteUsersTest extends TestCase $this->attachAccessoryToUsers($accessoryA, [$userA, $userB, $userC]); $this->attachAccessoryToUsers($accessoryB, [$userA, $userB]); - $this->assertTrue($userA->accessories->isNotEmpty()); - $this->assertTrue($userB->accessories->isNotEmpty()); - $this->assertTrue($userC->accessories->isNotEmpty()); - $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ 'ids' => [ @@ -103,13 +99,9 @@ class BulkDeleteUsersTest extends TestCase { [$userA, $userB, $userC] = User::factory()->count(3)->create(); - $assetA = $this->assignAssetToUser($userA); - $assetB = $this->assignAssetToUser($userB); - $assetC = $this->assignAssetToUser($userC); - - $this->assertTrue($userA->assets->isNotEmpty()); - $this->assertTrue($userB->assets->isNotEmpty()); - $this->assertTrue($userC->assets->isNotEmpty()); + $assetForUserA = $this->assignAssetToUser($userA); + $lonelyAsset = $this->assignAssetToUser($userB); + $assetForUserC = $this->assignAssetToUser($userC); $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ @@ -125,8 +117,8 @@ class BulkDeleteUsersTest extends TestCase $this->assertTrue($userB->fresh()->assets->isNotEmpty()); $this->assertTrue($userC->fresh()->assets->isEmpty()); - $this->assertActionLogCheckInEntryFor($userA, $assetA); - $this->assertActionLogCheckInEntryFor($userC, $assetC); + $this->assertActionLogCheckInEntryFor($userA, $assetForUserA); + $this->assertActionLogCheckInEntryFor($userC, $assetForUserC); } public function testConsumablesCanBeBulkCheckedIn() @@ -138,10 +130,6 @@ class BulkDeleteUsersTest extends TestCase $this->attachConsumableToUsers($consumableA, [$userA, $userB, $userC]); $this->attachConsumableToUsers($consumableB, [$userA, $userB]); - $this->assertTrue($userA->consumables->isNotEmpty()); - $this->assertTrue($userB->consumables->isNotEmpty()); - $this->assertTrue($userC->consumables->isNotEmpty()); - $this->actingAs(User::factory()->editUsers()->create()) ->post(route('users/bulksave'), [ 'ids' => [ From 35e7a3163cb5e36153dd4a02b43f398e8361f4dd Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:54:31 -0700 Subject: [PATCH 041/118] Implement test case --- .../Ui/BulkActions/BulkDeleteUsersTest.php | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php index f9f1c27de..e6a83e936 100644 --- a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php @@ -5,6 +5,8 @@ namespace Feature\Users\Ui\BulkActions; use App\Models\Accessory; use App\Models\Asset; use App\Models\Consumable; +use App\Models\License; +use App\Models\LicenseSeat; use App\Models\Statuslabel; use App\Models\User; use Illuminate\Database\Eloquent\Model; @@ -153,10 +155,51 @@ class BulkDeleteUsersTest extends TestCase public function testLicenseSeatsCanBeBulkCheckedIn() { - $this->markTestIncomplete(); + [$userA, $userB, $userC] = User::factory()->count(3)->create(); - // @todo: - // $this->assertActionLogCheckInEntryFor(); ... + $licenseSeatForUserA = LicenseSeat::factory()->assignedToUser($userA)->create(); + $lonelyLicenseSeat = LicenseSeat::factory()->assignedToUser($userB)->create(); + $licenseSeatForUserC = LicenseSeat::factory()->assignedToUser($userC)->create(); + + $this->actingAs(User::factory()->editUsers()->create()) + ->post(route('users/bulksave'), [ + 'ids' => [ + $userA->id, + $userC->id, + ], + ]) + ->assertRedirect(route('users.index')) + ->assertSessionHas('success', trans('general.bulk_checkin_success')); + + $this->assertDatabaseMissing('license_seats', [ + 'license_id' => $licenseSeatForUserA->license->id, + 'assigned_to' => $userA->id, + ]); + + $this->assertDatabaseMissing('license_seats', [ + 'license_id' => $licenseSeatForUserC->license->id, + 'assigned_to' => $userC->id, + ]); + + // Slightly different from the other assertions since we use + // the license and not the license seat in this case. + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userA->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => License::class, + 'item_id' => $licenseSeatForUserA->license->id, + ]); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkin from', + 'target_id' => $userC->id, + 'target_type' => User::class, + 'note' => 'Bulk checkin items', + 'item_type' => License::class, + 'item_id' => $licenseSeatForUserC->license->id, + ]); } public function testUsersCanBeDeletedInBulk() From 392d34422ace4f4401d997aea5326db627bb6b1c Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:57:40 -0700 Subject: [PATCH 042/118] Remove code handled by ConsumableAssignment:: call above --- app/Http/Controllers/Users/BulkUsersController.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index c2cc8607f..388760742 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -246,9 +246,6 @@ class BulkUsersController extends Controller foreach ($users as $user) { - - // @todo: This can be deleted since we have ConsumableAssignment above right? - $user->consumables()->sync([]); // @todo: Can this be removed if we introduce AccessoryAssignment? $user->accessories()->sync([]); if ($request->input('delete_user')=='1') { From 1c664af3260f269810d9735bb9060dc3f242d963 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:58:08 -0700 Subject: [PATCH 043/118] Remove todo outside of scope --- app/Http/Controllers/Users/BulkUsersController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index 388760742..899728139 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -246,7 +246,6 @@ class BulkUsersController extends Controller foreach ($users as $user) { - // @todo: Can this be removed if we introduce AccessoryAssignment? $user->accessories()->sync([]); if ($request->input('delete_user')=='1') { $user->delete(); From 01e4382d20ba36cb0811300f4b5c551c978249c3 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:58:17 -0700 Subject: [PATCH 044/118] Formatting --- app/Http/Controllers/Users/BulkUsersController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index 899728139..c1a0dfab6 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -244,13 +244,11 @@ class BulkUsersController extends Controller LicenseSeat::whereIn('id', $licenses->pluck('id'))->update(['assigned_to' => null]); ConsumableAssignment::whereIn('id', $consumableUserRows->pluck('id'))->delete(); - foreach ($users as $user) { $user->accessories()->sync([]); if ($request->input('delete_user')=='1') { $user->delete(); } - } $msg = trans('general.bulk_checkin_success'); From 17eccfcd8b840e2394ac19abe4acac9c7242f4d2 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 16:58:27 -0700 Subject: [PATCH 045/118] Formatting --- app/Http/Controllers/Users/BulkUsersController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index c1a0dfab6..a3bf2ad0c 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -240,7 +240,6 @@ class BulkUsersController extends Controller 'expected_checkin' => null, ]); - LicenseSeat::whereIn('id', $licenses->pluck('id'))->update(['assigned_to' => null]); ConsumableAssignment::whereIn('id', $consumableUserRows->pluck('id'))->delete(); From 94e00b8a3e663d970d4035542cb7156700a95a67 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Mon, 5 Aug 2024 17:26:11 -0700 Subject: [PATCH 046/118] Use new accessory checkout relationship --- .../Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php index e6a83e936..d84135cce 100644 --- a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php @@ -3,6 +3,7 @@ namespace Feature\Users\Ui\BulkActions; use App\Models\Accessory; +use App\Models\AccessoryCheckout; use App\Models\Asset; use App\Models\Consumable; use App\Models\License; @@ -230,10 +231,9 @@ class BulkDeleteUsersTest extends TestCase private function attachAccessoryToUsers(Accessory $accessory, array $users): void { foreach ($users as $user) { - $accessory->users()->attach($accessory->id, [ - 'accessory_id' => $accessory->id, - 'assigned_to' => $user->id, - ]); + $a = $accessory->checkouts()->make(); + $a->assignedTo()->associate($user); + $a->save(); } } From 984840dc82d8e74a6a763f9b8932f5e4b7304f54 Mon Sep 17 00:00:00 2001 From: Shift Date: Tue, 6 Aug 2024 20:25:18 +0000 Subject: [PATCH 047/118] Bump PHPUnit dependencies --- composer.json | 260 +++++++++++++++++++++++++------------------------- 1 file changed, 130 insertions(+), 130 deletions(-) diff --git a/composer.json b/composer.json index 9a76301e2..6d44077bb 100644 --- a/composer.json +++ b/composer.json @@ -1,135 +1,135 @@ { - "name": "snipe/snipe-it", - "description": "Open source asset management system built on Laravel.", - "keywords": [ - "assets", - "asset-management", - "it-tools", - "inventory", - "laravel" - ], - "license": "AGPL-3.0-or-later", - "type": "project", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/grokability/laravel-scim-server" - } - ], - "require": { - "php": "^8.1", - "ext-curl": "*", - "ext-fileinfo": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-pdo": "*", - "alek13/slack": "^2.0", - "arietimmerman/laravel-scim-server": "dev-master", - "bacon/bacon-qr-code": "^2.0", - "barryvdh/laravel-debugbar": "^3.13", - "barryvdh/laravel-dompdf": "^2.0", - "doctrine/cache": "^1.10", - "doctrine/dbal": "^3.1", - "doctrine/instantiator": "^1.3", - "eduardokum/laravel-mail-auto-embed": "^2.0", - "enshrined/svg-sanitize": "^0.15.0", - "erusev/parsedown": "^1.7", - "guzzlehttp/guzzle": "^7.0.1", - "intervention/image": "^2.5", - "javiereguiluz/easyslugger": "^1.0", - "laravel-notification-channels/google-chat": "^3.0", - "laravel-notification-channels/microsoft-teams": "^1.1", - "laravel/framework": "^10.0", - "laravel/helpers": "^1.4", - "laravel/passport": "^11.0", - "laravel/slack-notification-channel": "^2.3", - "laravel/socialite": "^5.6", - "laravel/tinker": "^2.6", - "laravel/ui": "^4.0", - "laravelcollective/html": "^6.2", - "league/csv": "^9.7", - "league/flysystem-aws-s3-v3": "^3.0", - "livewire/livewire": "^3.5", - "neitanod/forceutf8": "^2.0", - "nesbot/carbon": "^2.32", - "nunomaduro/collision": "^6.1", - "okvpn/clock-lts": "^1.0", - "onelogin/php-saml": "^3.4", - "paragonie/constant_time_encoding": "^2.3", - "paragonie/sodium_compat": "^1.19", - "phpdocumentor/reflection-docblock": "^5.1", - "phpspec/prophecy": "^1.10", - "pragmarx/google2fa-laravel": "^1.3", - "rollbar/rollbar-laravel": "^8.0", - "spatie/laravel-backup": "^8.8", - "spatie/laravel-ignition": "^2.0", - "tecnickcom/tc-lib-barcode": "^1.15", - "tecnickcom/tcpdf": "^6.5", - "unicodeveloper/laravel-password": "^1.0", - "watson/validating": "^8.1" - }, - "suggest": { - "ext-ldap": "*", - "ext-zip": "*", - "ext-exif": "*" - }, - "require-dev": { - "brianium/paratest": "^v6.4.4", - "fakerphp/faker": "^1.16", - "larastan/larastan": "^2.9", - "mockery/mockery": "^1.4", - "nunomaduro/phpinsights": "^2.7", - "php-mock/php-mock-phpunit": "^2.10", - "phpunit/phpunit": "^9.6.19", - "squizlabs/php_codesniffer": "^3.5", - "symfony/css-selector": "^4.4", - "symfony/dom-crawler": "^4.4", - "vimeo/psalm": "^5.13" - }, - "extra": { - "laravel": { - "dont-discover": [ - "rollbar/rollbar-laravel" - ] - } - }, - "autoload": { - "classmap": [ - "database" + "name": "snipe/snipe-it", + "description": "Open source asset management system built on Laravel.", + "keywords": [ + "assets", + "asset-management", + "it-tools", + "inventory", + "laravel" ], - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "classmap": [ - "tests/TestCase.php" + "license": "AGPL-3.0-or-later", + "type": "project", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/grokability/laravel-scim-server" + } ], - "psr-4": { - "App\\": "app/", - "Tests\\": "tests/" + "require": { + "php": "^8.1", + "ext-curl": "*", + "ext-fileinfo": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-pdo": "*", + "alek13/slack": "^2.0", + "arietimmerman/laravel-scim-server": "dev-master", + "bacon/bacon-qr-code": "^2.0", + "barryvdh/laravel-debugbar": "^3.13", + "barryvdh/laravel-dompdf": "^2.0", + "doctrine/cache": "^1.10", + "doctrine/dbal": "^3.1", + "doctrine/instantiator": "^1.3", + "eduardokum/laravel-mail-auto-embed": "^2.0", + "enshrined/svg-sanitize": "^0.15.0", + "erusev/parsedown": "^1.7", + "guzzlehttp/guzzle": "^7.0.1", + "intervention/image": "^2.5", + "javiereguiluz/easyslugger": "^1.0", + "laravel-notification-channels/google-chat": "^3.0", + "laravel-notification-channels/microsoft-teams": "^1.1", + "laravel/framework": "^10.0", + "laravel/helpers": "^1.4", + "laravel/passport": "^11.0", + "laravel/slack-notification-channel": "^2.3", + "laravel/socialite": "^5.6", + "laravel/tinker": "^2.6", + "laravel/ui": "^4.0", + "laravelcollective/html": "^6.2", + "league/csv": "^9.7", + "league/flysystem-aws-s3-v3": "^3.0", + "livewire/livewire": "^3.5", + "neitanod/forceutf8": "^2.0", + "nesbot/carbon": "^2.32", + "nunomaduro/collision": "^7.0", + "okvpn/clock-lts": "^1.0", + "onelogin/php-saml": "^3.4", + "paragonie/constant_time_encoding": "^2.3", + "paragonie/sodium_compat": "^1.19", + "phpdocumentor/reflection-docblock": "^5.1", + "phpspec/prophecy": "^1.10", + "pragmarx/google2fa-laravel": "^1.3", + "rollbar/rollbar-laravel": "^8.0", + "spatie/laravel-backup": "^8.8", + "spatie/laravel-ignition": "^2.0", + "tecnickcom/tc-lib-barcode": "^1.15", + "tecnickcom/tcpdf": "^6.5", + "unicodeveloper/laravel-password": "^1.0", + "watson/validating": "^8.1" + }, + "suggest": { + "ext-ldap": "*", + "ext-zip": "*", + "ext-exif": "*" + }, + "require-dev": { + "brianium/paratest": "^7.0", + "fakerphp/faker": "^1.16", + "larastan/larastan": "^2.9", + "mockery/mockery": "^1.4", + "nunomaduro/phpinsights": "^2.7", + "php-mock/php-mock-phpunit": "^2.10", + "phpunit/phpunit": "^10.0", + "squizlabs/php_codesniffer": "^3.5", + "symfony/css-selector": "^4.4", + "symfony/dom-crawler": "^4.4", + "vimeo/psalm": "^5.13" + }, + "extra": { + "laravel": { + "dont-discover": [ + "rollbar/rollbar-laravel" + ] + } + }, + "autoload": { + "classmap": [ + "database" + ], + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "classmap": [ + "tests/TestCase.php" + ], + "psr-4": { + "App\\": "app/", + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi", + "@php artisan vendor:publish --force --tag=livewire:assets --ansi" + ], + "post-create-project-cmd": [ + "php artisan key:generate" + ] + }, + "config": { + "preferred-install": "dist", + "sort-packages": true, + "optimize-autoloader": true, + "discard-changes": true, + "process-timeout": 3000, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi", - "@php artisan vendor:publish --force --tag=livewire:assets --ansi" - ], - "post-create-project-cmd": [ - "php artisan key:generate" - ] - }, - "config": { - "preferred-install": "dist", - "sort-packages": true, - "optimize-autoloader": true, - "discard-changes": true, - "process-timeout": 3000, - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } - } } From b680dab5c9bf4d262207a22c657a20ae3724da88 Mon Sep 17 00:00:00 2001 From: Shift Date: Tue, 6 Aug 2024 20:25:19 +0000 Subject: [PATCH 048/118] Ignore PHPUnit cache folder --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 25a887e38..0715ac049 100755 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,5 @@ _ide_helper_models.php storage/ldap_client_tls.cert storage/ldap_client_tls.key /storage/framework/testing + +/.phpunit.cache \ No newline at end of file From 96241cb67c0c09c9500515b06eac01ef1c5ee121 Mon Sep 17 00:00:00 2001 From: Shift Date: Tue, 6 Aug 2024 20:25:21 +0000 Subject: [PATCH 049/118] Adopt PHP attributes in test classes --- tests/Feature/Checkouts/Api/AssetCheckoutTest.php | 3 ++- tests/Feature/Checkouts/Ui/AssetCheckoutTest.php | 3 ++- .../Email/EmailNotificationsUponCheckinTest.php | 5 ++--- .../Webhooks/SlackNotificationsUponCheckinTest.php | 14 +++++++------- .../SlackNotificationsUponCheckoutTest.php | 14 +++++++------- tests/Feature/Settings/ShowSetUpPageTest.php | 5 ++--- tests/Unit/CompanyScopingTest.php | 3 ++- tests/Unit/LdapTest.php | 5 ++--- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php index f85af9035..44783aa63 100644 --- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Checkouts\Api; +use PHPUnit\Framework\Attributes\DataProvider; use App\Events\CheckoutableCheckedOut; use App\Models\Asset; use App\Models\Location; @@ -148,7 +149,7 @@ class AssetCheckoutTest extends TestCase ]; } - /** @dataProvider checkoutTargets */ + #[DataProvider('checkoutTargets')] public function testAssetCanBeCheckedOut($data) { ['checkout_type' => $type, 'target' => $target, 'expected_location' => $expectedLocation] = $data(); diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php index 165c6a419..99e30fdcb 100644 --- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Checkouts\Ui; +use PHPUnit\Framework\Attributes\DataProvider; use App\Events\CheckoutableCheckedOut; use App\Models\Accessory; use App\Models\Asset; @@ -167,7 +168,7 @@ class AssetCheckoutTest extends TestCase ]; } - /** @dataProvider checkoutTargets */ + #[DataProvider('checkoutTargets')] public function testAssetCanBeCheckedOut($data) { ['checkout_type' => $type, 'target' => $target, 'expected_location' => $expectedLocation] = $data(); diff --git a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php index 4ae415f1e..449f65c7a 100644 --- a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Notifications\Email; +use PHPUnit\Framework\Attributes\Group; use App\Events\CheckoutableCheckedIn; use App\Models\Asset; use App\Models\User; @@ -9,9 +10,7 @@ use App\Notifications\CheckinAssetNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -/** - * @group notifications - */ +#[Group('notifications')] class EmailNotificationsUponCheckinTest extends TestCase { protected function setUp(): void diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php index 29bf06d9d..d6f3857a9 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php @@ -2,6 +2,8 @@ namespace Tests\Feature\Notifications\Webhooks; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; use App\Events\CheckoutableCheckedIn; use App\Models\Accessory; use App\Models\Asset; @@ -16,9 +18,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -/** - * @group notifications - */ +#[Group('notifications')] class SlackNotificationsUponCheckinTest extends TestCase { protected function setUp(): void @@ -69,7 +69,7 @@ class SlackNotificationsUponCheckinTest extends TestCase $this->assertNoSlackNotificationSent(CheckinAccessoryNotification::class); } - /** @dataProvider assetCheckInTargets */ + #[DataProvider('assetCheckInTargets')] public function testAssetCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -82,7 +82,7 @@ class SlackNotificationsUponCheckinTest extends TestCase $this->assertSlackNotificationSent(CheckinAssetNotification::class); } - /** @dataProvider assetCheckInTargets */ + #[DataProvider('assetCheckInTargets')] public function testAssetCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); @@ -107,7 +107,7 @@ class SlackNotificationsUponCheckinTest extends TestCase Notification::assertNothingSent(); } - /** @dataProvider licenseCheckInTargets */ + #[DataProvider('licenseCheckInTargets')] public function testLicenseCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -120,7 +120,7 @@ class SlackNotificationsUponCheckinTest extends TestCase $this->assertSlackNotificationSent(CheckinLicenseSeatNotification::class); } - /** @dataProvider licenseCheckInTargets */ + #[DataProvider('licenseCheckInTargets')] public function testLicenseCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php index 048448cad..753c46977 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php @@ -2,6 +2,8 @@ namespace Tests\Feature\Notifications\Webhooks; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Group; use App\Events\CheckoutableCheckedOut; use App\Models\Accessory; use App\Models\Asset; @@ -18,9 +20,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -/** - * @group notifications - */ +#[Group('notifications')] class SlackNotificationsUponCheckoutTest extends TestCase { protected function setUp(): void @@ -71,7 +71,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertNoSlackNotificationSent(CheckoutAccessoryNotification::class); } - /** @dataProvider assetCheckoutTargets */ + #[DataProvider('assetCheckoutTargets')] public function testAssetCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -84,7 +84,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertSlackNotificationSent(CheckoutAssetNotification::class); } - /** @dataProvider assetCheckoutTargets */ + #[DataProvider('assetCheckoutTargets')] public function testAssetCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); @@ -133,7 +133,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertNoSlackNotificationSent(CheckoutConsumableNotification::class); } - /** @dataProvider licenseCheckoutTargets */ + #[DataProvider('licenseCheckoutTargets')] public function testLicenseCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -146,7 +146,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertSlackNotificationSent(CheckoutLicenseSeatNotification::class); } - /** @dataProvider licenseCheckoutTargets */ + #[DataProvider('licenseCheckoutTargets')] public function testLicenseCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php index 929c41c4e..196902ac5 100644 --- a/tests/Feature/Settings/ShowSetUpPageTest.php +++ b/tests/Feature/Settings/ShowSetUpPageTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Settings; +use PHPUnit\Framework\Attributes\DataProvider; use App\Http\Controllers\SettingsController; use Illuminate\Database\Events\QueryExecuted; use Illuminate\Http\Client\ConnectionException; @@ -163,9 +164,7 @@ class ShowSetUpPageTest extends TestCase }); } - /** - * @dataProvider willShowErrorWhenDotEnvFileIsAccessibleViaHttpData - */ + #[DataProvider('willShowErrorWhenDotEnvFileIsAccessibleViaHttpData')] public function testWillShowErrorWhenDotEnvFileIsAccessibleViaHttp(int $statusCode): void { $this->preventStrayRequest = false; diff --git a/tests/Unit/CompanyScopingTest.php b/tests/Unit/CompanyScopingTest.php index 3923dd9f7..aefd5dd01 100644 --- a/tests/Unit/CompanyScopingTest.php +++ b/tests/Unit/CompanyScopingTest.php @@ -2,6 +2,7 @@ namespace Tests\Unit; +use PHPUnit\Framework\Attributes\DataProvider; use App\Models\Accessory; use App\Models\Asset; use App\Models\AssetMaintenance; @@ -27,7 +28,7 @@ class CompanyScopingTest extends TestCase ]; } - /** @dataProvider models */ + #[DataProvider('models')] public function testCompanyScoping($model) { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Unit/LdapTest.php b/tests/Unit/LdapTest.php index 6beb0d211..65bdbe627 100644 --- a/tests/Unit/LdapTest.php +++ b/tests/Unit/LdapTest.php @@ -2,12 +2,11 @@ namespace Tests\Unit; +use PHPUnit\Framework\Attributes\Group; use App\Models\Ldap; use Tests\TestCase; -/** - * @group ldap - */ +#[Group('ldap')] class LdapTest extends TestCase { use \phpmock\phpunit\PHPMock; From b1e92ab866e03ac9ac3eb085764d9c5c802396a9 Mon Sep 17 00:00:00 2001 From: Shift Date: Tue, 6 Aug 2024 20:25:21 +0000 Subject: [PATCH 050/118] Declare data providers as `static` --- tests/Feature/Checkouts/Api/AssetCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/AssetCheckoutTest.php | 2 +- .../Webhooks/SlackNotificationsUponCheckinTest.php | 4 ++-- .../Webhooks/SlackNotificationsUponCheckoutTest.php | 4 ++-- tests/Unit/CompanyScopingTest.php | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php index 44783aa63..ded388964 100644 --- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php @@ -83,7 +83,7 @@ class AssetCheckoutTest extends TestCase * This data provider contains checkout targets along with the * asset's expected location after the checkout process. */ - public function checkoutTargets(): array + public static function checkoutTargets(): array { return [ 'Checkout to User' => [ diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php index 99e30fdcb..f268a9385 100644 --- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php @@ -122,7 +122,7 @@ class AssetCheckoutTest extends TestCase * This data provider contains checkout targets along with the * asset's expected location after the checkout process. */ - public function checkoutTargets(): array + public static function checkoutTargets(): array { return [ 'User' => [function () { diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php index d6f3857a9..adaede07e 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php @@ -28,7 +28,7 @@ class SlackNotificationsUponCheckinTest extends TestCase Notification::fake(); } - public function assetCheckInTargets(): array + public static function assetCheckInTargets(): array { return [ 'Asset checked out to user' => [fn() => User::factory()->create()], @@ -37,7 +37,7 @@ class SlackNotificationsUponCheckinTest extends TestCase ]; } - public function licenseCheckInTargets(): array + public static function licenseCheckInTargets(): array { return [ 'License checked out to user' => [fn() => User::factory()->create()], diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php index 753c46977..4f34da285 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php @@ -30,7 +30,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase Notification::fake(); } - public function assetCheckoutTargets(): array + public static function assetCheckoutTargets(): array { return [ 'Asset checked out to user' => [fn() => User::factory()->create()], @@ -39,7 +39,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase ]; } - public function licenseCheckoutTargets(): array + public static function licenseCheckoutTargets(): array { return [ 'License checked out to user' => [fn() => User::factory()->create()], diff --git a/tests/Unit/CompanyScopingTest.php b/tests/Unit/CompanyScopingTest.php index aefd5dd01..ff55e8305 100644 --- a/tests/Unit/CompanyScopingTest.php +++ b/tests/Unit/CompanyScopingTest.php @@ -17,7 +17,7 @@ use Tests\TestCase; class CompanyScopingTest extends TestCase { - public function models(): array + public static function models(): array { return [ 'Accessories' => [Accessory::class], From 83fb6826eedf7e7adc066b394a616b472b178414 Mon Sep 17 00:00:00 2001 From: Shift Date: Tue, 6 Aug 2024 20:25:22 +0000 Subject: [PATCH 051/118] Add return types to test methods --- .../AssetModels/Api/CreateAssetModelsTest.php | 6 +-- .../AssetModels/Api/IndexAssetModelsTest.php | 8 ++-- .../AssetModels/Api/UpdateAssetModelsTest.php | 12 ++--- .../AssetModels/Ui/CreateAssetModelsTest.php | 6 +-- .../AssetModels/Ui/IndexAssetModelsTest.php | 4 +- .../AssetModels/Ui/UpdateAssetModelsTest.php | 6 +-- tests/Feature/Assets/Api/AssetFilesTest.php | 8 ++-- tests/Feature/Assets/Api/AssetIndexTest.php | 16 +++---- .../Assets/Api/AssetsForSelectListTest.php | 4 +- .../Assets/Api/RequestableAssetTest.php | 6 +-- tests/Feature/Assets/Api/StoreAssetTest.php | 48 +++++++++---------- tests/Feature/Assets/Api/UpdateAssetTest.php | 48 +++++++++---------- .../Assets/Ui/BulkDeleteAssetsTest.php | 16 +++---- .../Feature/Assets/Ui/BulkEditAssetsTest.php | 12 ++--- tests/Feature/Assets/Ui/CloneAssetTest.php | 4 +- tests/Feature/Assets/Ui/EditAssetTest.php | 6 +-- .../Categories/Api/CreateCategoriesTest.php | 8 ++-- .../Categories/Api/IndexCategoriesTest.php | 6 +-- .../Categories/Api/UpdateCategoriesTest.php | 4 +- .../Categories/Ui/CreateCategoriesTest.php | 6 +-- .../Categories/Ui/IndexCategoriesTest.php | 4 +- .../Categories/Ui/UpdateCategoriesTest.php | 10 ++-- .../Feature/Checkins/Api/AssetCheckinTest.php | 20 ++++---- .../Checkins/Ui/AccessoryCheckinTest.php | 8 ++-- .../Feature/Checkins/Ui/AssetCheckinTest.php | 28 +++++------ .../Checkins/Ui/ComponentCheckinTest.php | 6 +-- .../Checkins/Ui/LicenseCheckinTest.php | 2 +- .../Ui/AccessoryAcceptanceTest.php | 6 +-- .../Checkouts/Api/AccessoryCheckoutTest.php | 16 +++---- .../Checkouts/Api/AssetCheckoutTest.php | 18 +++---- .../Checkouts/Api/ConsumableCheckoutTest.php | 12 ++--- .../Checkouts/Ui/AccessoryCheckoutTest.php | 24 +++++----- .../Checkouts/Ui/AssetCheckoutTest.php | 30 ++++++------ .../Checkouts/Ui/ComponentsCheckoutTest.php | 8 ++-- .../Checkouts/Ui/ConsumableCheckoutTest.php | 18 +++---- .../Checkouts/Ui/LicenseCheckoutTest.php | 12 ++--- .../Components/Api/ComponentIndexTest.php | 2 +- .../Components/Ui/ComponentIndexTest.php | 4 +- tests/Feature/Console/MergeUsersTest.php | 2 +- tests/Feature/Console/OptimizeTest.php | 2 +- .../Consumables/Api/ConsumableIndexTest.php | 4 +- .../Consumables/Api/ConsumableUpdateTest.php | 4 +- .../Consumables/Api/ConsumableViewTest.php | 2 +- .../Consumables/Ui/ConsumableIndexTest.php | 4 +- .../Consumables/Ui/ConsumableViewTest.php | 4 +- tests/Feature/DashboardTest.php | 2 +- .../Departments/Api/CreateDepartmentsTest.php | 2 +- .../Departments/Api/DepartmentsIndexTest.php | 8 ++-- .../Departments/Api/UpdateDepartmentsTest.php | 4 +- .../Departments/Ui/CreateDepartmentsTest.php | 4 +- .../Departments/Ui/IndexDepartmentsTest.php | 4 +- .../Departments/Ui/UpdateDepartmentsTest.php | 4 +- tests/Feature/Groups/Api/StoreGroupTest.php | 8 ++-- tests/Feature/Groups/Ui/IndexGroupTest.php | 4 +- .../Feature/Licenses/Api/LicenseIndexTest.php | 2 +- .../Feature/Licenses/Ui/CreateLicenseTest.php | 4 +- .../Feature/Licenses/Ui/LicenseIndexTest.php | 4 +- tests/Feature/Licenses/Ui/LicenseViewTest.php | 4 +- .../Feature/Livewire/CategoryEditFormTest.php | 18 +++---- .../Locations/Api/CreateLocationsTest.php | 6 +-- .../Locations/Api/DeleteLocationsTest.php | 12 ++--- .../Locations/Api/IndexLocationsTest.php | 6 +-- .../Api/LocationsForSelectListTest.php | 6 +-- .../Locations/Api/LocationsViewTest.php | 6 +-- .../Locations/Api/UpdateLocationsTest.php | 4 +- .../Locations/Ui/CreateLocationsTest.php | 4 +- .../Locations/Ui/IndexLocationsTest.php | 4 +- .../Locations/Ui/UpdateLocationsTest.php | 6 +-- .../EmailNotificationsUponCheckinTest.php | 4 +- .../SlackNotificationsUponCheckinTest.php | 14 +++--- .../SlackNotificationsUponCheckoutTest.php | 18 +++---- tests/Feature/Reporting/CustomReportTest.php | 6 +-- .../Reporting/UnacceptedAssetReportTest.php | 4 +- .../Feature/Settings/BrandingSettingsTest.php | 26 +++++----- tests/Feature/Settings/ShowSetUpPageTest.php | 2 +- tests/Feature/Users/Api/DeleteUserTest.php | 18 +++---- tests/Feature/Users/Api/RestoreUserTest.php | 10 ++-- tests/Feature/Users/Api/UpdateUserTest.php | 24 +++++----- tests/Feature/Users/Api/UserSearchTest.php | 12 ++--- .../Users/Api/UsersForSelectListTest.php | 8 ++-- tests/Feature/Users/Api/ViewUserTest.php | 2 +- tests/Feature/Users/Ui/DeleteUserTest.php | 24 +++++----- tests/Feature/Users/Ui/MergeUsersTest.php | 14 +++--- tests/Feature/Users/Ui/UpdateUserTest.php | 10 ++-- tests/Feature/Users/Ui/ViewUserTest.php | 6 +-- tests/Unit/AccessoryTest.php | 8 ++-- tests/Unit/AssetMaintenanceTest.php | 8 ++-- tests/Unit/AssetModelTest.php | 2 +- tests/Unit/AssetTest.php | 18 +++---- tests/Unit/CategoryTest.php | 4 +- tests/Unit/CompanyScopingTest.php | 6 +-- tests/Unit/ComponentTest.php | 6 +-- tests/Unit/CustomFieldTest.php | 18 +++---- tests/Unit/DepreciationTest.php | 4 +- tests/Unit/Helpers/HelperTest.php | 8 ++-- tests/Unit/LdapTest.php | 22 ++++----- tests/Unit/Listeners/LogListenerTest.php | 2 +- tests/Unit/LocationTest.php | 4 +- tests/Unit/Models/Company/CompanyTest.php | 2 +- .../Company/GetIdForCurrentUserTest.php | 8 ++-- tests/Unit/Models/Labels/FieldOptionTest.php | 2 +- tests/Unit/NotificationTest.php | 2 +- tests/Unit/SnipeModelTest.php | 14 +++--- tests/Unit/SnipeTranslatorTest.php | 20 ++++---- tests/Unit/StatuslabelTest.php | 12 ++--- tests/Unit/UserTest.php | 14 +++--- 106 files changed, 498 insertions(+), 498 deletions(-) diff --git a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php index a0b1c27b7..9dd0400f6 100644 --- a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php @@ -12,14 +12,14 @@ class CreateAssetModelsTest extends TestCase { - public function testRequiresPermissionToCreateAssetModel() + public function testRequiresPermissionToCreateAssetModel(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.models.store')) ->assertForbidden(); } - public function testCanCreateAssetModelWithAssetModelType() + public function testCanCreateAssetModelWithAssetModelType(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.models.store'), [ @@ -37,7 +37,7 @@ class CreateAssetModelsTest extends TestCase $this->assertEquals('Test AssetModel', $model->name); } - public function testCannotCreateAssetModelWithoutCategory() + public function testCannotCreateAssetModelWithoutCategory(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.models.store'), [ diff --git a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php index 26e4dd75b..4a672965d 100644 --- a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php @@ -10,19 +10,19 @@ use Tests\TestCase; class IndexAssetModelsTest extends TestCase { - public function testViewingAssetModelIndexRequiresAuthentication() + public function testViewingAssetModelIndexRequiresAuthentication(): void { $this->getJson(route('api.models.index'))->assertRedirect(); } - public function testViewingAssetModelIndexRequiresPermission() + public function testViewingAssetModelIndexRequiresPermission(): void { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.models.index')) ->assertForbidden(); } - public function testAssetModelIndexReturnsExpectedAssetModels() + public function testAssetModelIndexReturnsExpectedAssetModels(): void { AssetModel::factory()->count(3)->create(); @@ -42,7 +42,7 @@ class IndexAssetModelsTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetModelIndexSearchReturnsExpectedAssetModels() + public function testAssetModelIndexSearchReturnsExpectedAssetModels(): void { AssetModel::factory()->count(3)->create(); AssetModel::factory()->count(1)->create(['name' => 'Test Model']); diff --git a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php index c5ec21265..ab42dbdd6 100644 --- a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class UpdateAssetModelsTest extends TestCase { - public function testRequiresPermissionToEditAssetModel() + public function testRequiresPermissionToEditAssetModel(): void { $model = AssetModel::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -18,7 +18,7 @@ class UpdateAssetModelsTest extends TestCase ->assertForbidden(); } - public function testCanUpdateAssetModelViaPatch() + public function testCanUpdateAssetModelViaPatch(): void { $model = AssetModel::factory()->create(); @@ -37,7 +37,7 @@ class UpdateAssetModelsTest extends TestCase } - public function testCannotUpdateAssetModelViaPatchWithAccessoryCategory() + public function testCannotUpdateAssetModelViaPatchWithAccessoryCategory(): void { $category = Category::factory()->forAccessories()->create(); $model = AssetModel::factory()->create(); @@ -57,7 +57,7 @@ class UpdateAssetModelsTest extends TestCase $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); } - public function testCannotUpdateAssetModelViaPatchWithLicenseCategory() + public function testCannotUpdateAssetModelViaPatchWithLicenseCategory(): void { $category = Category::factory()->forLicenses()->create(); $model = AssetModel::factory()->create(); @@ -77,7 +77,7 @@ class UpdateAssetModelsTest extends TestCase $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); } - public function testCannotUpdateAssetModelViaPatchWithConsumableCategory() + public function testCannotUpdateAssetModelViaPatchWithConsumableCategory(): void { $category = Category::factory()->forConsumables()->create(); $model = AssetModel::factory()->create(); @@ -97,7 +97,7 @@ class UpdateAssetModelsTest extends TestCase $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); } - public function testCannotUpdateAssetModelViaPatchWithComponentCategory() + public function testCannotUpdateAssetModelViaPatchWithComponentCategory(): void { $category = Category::factory()->forComponents()->create(); $model = AssetModel::factory()->create(); diff --git a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php index ef35aa5f6..a959b66c9 100644 --- a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class CreateAssetModelsTest extends TestCase { - public function testPermissionRequiredToCreateAssetModel() + public function testPermissionRequiredToCreateAssetModel(): void { $this->actingAs(User::factory()->create()) ->post(route('models.store'), [ @@ -19,7 +19,7 @@ class CreateAssetModelsTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateAssetModels() + public function testUserCanCreateAssetModels(): void { $this->assertFalse(AssetModel::where('name', 'Test Model')->exists()); @@ -33,7 +33,7 @@ class CreateAssetModelsTest extends TestCase $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); } - public function testUserCannotUseAccessoryCategoryTypeAsAssetModelCategoryType() + public function testUserCannotUseAccessoryCategoryTypeAsAssetModelCategoryType(): void { $response = $this->actingAs(User::factory()->superuser()->create()) diff --git a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php index 495de30f0..4e4d6e66c 100644 --- a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class IndexAssetModelsTest extends TestCase { - public function testPermissionRequiredToViewAssetModelList() + public function testPermissionRequiredToViewAssetModelList(): void { $this->actingAs(User::factory()->create()) ->get(route('models.index')) ->assertForbidden(); } - public function testUserCanListAssetModels() + public function testUserCanListAssetModels(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('models.index')) diff --git a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php index 423eaad57..f3eef58ef 100644 --- a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class UpdateAssetModelsTest extends TestCase { - public function testPermissionRequiredToStoreAssetModel() + public function testPermissionRequiredToStoreAssetModel(): void { $this->actingAs(User::factory()->create()) ->post(route('models.store'), [ @@ -20,7 +20,7 @@ class UpdateAssetModelsTest extends TestCase ->assertForbidden(); } - public function testUserCanEditAssetModels() + public function testUserCanEditAssetModels(): void { $category = Category::factory()->forAssets()->create(); $model = AssetModel::factory()->create(['name' => 'Test Model', 'category_id' => $category->id]); @@ -40,7 +40,7 @@ class UpdateAssetModelsTest extends TestCase } - public function testUserCannotChangeAssetModelCategoryType() + public function testUserCannotChangeAssetModelCategoryType(): void { $category = Category::factory()->forAssets()->create(); $model = AssetModel::factory()->create(['name' => 'Test Model', 'category_id' => $category->id]); diff --git a/tests/Feature/Assets/Api/AssetFilesTest.php b/tests/Feature/Assets/Api/AssetFilesTest.php index bc5b6043e..6f5173913 100644 --- a/tests/Feature/Assets/Api/AssetFilesTest.php +++ b/tests/Feature/Assets/Api/AssetFilesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class AssetFilesTest extends TestCase { - public function testAssetApiAcceptsFileUpload() + public function testAssetApiAcceptsFileUpload(): void { // Upload a file to an asset @@ -28,7 +28,7 @@ class AssetFilesTest extends TestCase ->assertOk(); } - public function testAssetApiListsFiles() + public function testAssetApiListsFiles(): void { // List all files on an asset @@ -50,7 +50,7 @@ class AssetFilesTest extends TestCase ]); } - public function testAssetApiDownloadsFile() + public function testAssetApiDownloadsFile(): void { // Download a file from an asset @@ -84,7 +84,7 @@ class AssetFilesTest extends TestCase ->assertOk(); } - public function testAssetApiDeletesFile() + public function testAssetApiDeletesFile(): void { // Delete a file from an asset diff --git a/tests/Feature/Assets/Api/AssetIndexTest.php b/tests/Feature/Assets/Api/AssetIndexTest.php index c4a362d28..4d40ba954 100644 --- a/tests/Feature/Assets/Api/AssetIndexTest.php +++ b/tests/Feature/Assets/Api/AssetIndexTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; class AssetIndexTest extends TestCase { - public function testAssetApiIndexReturnsExpectedAssets() + public function testAssetApiIndexReturnsExpectedAssets(): void { Asset::factory()->count(3)->create(); @@ -31,7 +31,7 @@ class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsDisplayUpcomingAuditsDue() + public function testAssetApiIndexReturnsDisplayUpcomingAuditsDue(): void { Asset::factory()->count(3)->create(['next_audit_date' => Carbon::now()->format('Y-m-d')]); @@ -47,7 +47,7 @@ class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsOverdueForAudit() + public function testAssetApiIndexReturnsOverdueForAudit(): void { Asset::factory()->count(3)->create(['next_audit_date' => Carbon::now()->subDays(1)->format('Y-m-d')]); @@ -63,7 +63,7 @@ class AssetIndexTest extends TestCase } - public function testAssetApiIndexReturnsDueOrOverdueForAudit() + public function testAssetApiIndexReturnsDueOrOverdueForAudit(): void { Asset::factory()->count(3)->create(['next_audit_date' => Carbon::now()->format('Y-m-d')]); Asset::factory()->count(2)->create(['next_audit_date' => Carbon::now()->subDays(1)->format('Y-m-d')]); @@ -81,7 +81,7 @@ class AssetIndexTest extends TestCase - public function testAssetApiIndexReturnsDueForExpectedCheckin() + public function testAssetApiIndexReturnsDueForExpectedCheckin(): void { Asset::factory()->count(3)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->format('Y-m-d')]); @@ -97,7 +97,7 @@ class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsOverdueForExpectedCheckin() + public function testAssetApiIndexReturnsOverdueForExpectedCheckin(): void { Asset::factory()->count(3)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->subDays(1)->format('Y-m-d')]); @@ -111,7 +111,7 @@ class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsDueOrOverdueForExpectedCheckin() + public function testAssetApiIndexReturnsDueOrOverdueForExpectedCheckin(): void { Asset::factory()->count(3)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->subDays(1)->format('Y-m-d')]); Asset::factory()->count(2)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->format('Y-m-d')]); @@ -126,7 +126,7 @@ class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 5)->etc()); } - public function testAssetApiIndexAdheresToCompanyScoping() + public function testAssetApiIndexAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Assets/Api/AssetsForSelectListTest.php b/tests/Feature/Assets/Api/AssetsForSelectListTest.php index de797651e..603fab617 100644 --- a/tests/Feature/Assets/Api/AssetsForSelectListTest.php +++ b/tests/Feature/Assets/Api/AssetsForSelectListTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class AssetsForSelectListTest extends TestCase { - public function testAssetsCanBeSearchedForByAssetTag() + public function testAssetsCanBeSearchedForByAssetTag(): void { Asset::factory()->create(['asset_tag' => '0001']); Asset::factory()->create(['asset_tag' => '0002']); @@ -25,7 +25,7 @@ class AssetsForSelectListTest extends TestCase $this->assertTrue($results->pluck('text')->contains(fn($text) => str_contains($text, '0002'))); } - public function testAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled() + public function testAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Assets/Api/RequestableAssetTest.php b/tests/Feature/Assets/Api/RequestableAssetTest.php index d24913ad6..28b916380 100644 --- a/tests/Feature/Assets/Api/RequestableAssetTest.php +++ b/tests/Feature/Assets/Api/RequestableAssetTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; class RequestableAssetTest extends TestCase { - public function testViewingRequestableAssetsRequiresCorrectPermission() + public function testViewingRequestableAssetsRequiresCorrectPermission(): void { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.assets.requestable')) ->assertForbidden(); } - public function testReturnsRequestableAssets() + public function testReturnsRequestableAssets(): void { $requestableAsset = Asset::factory()->requestable()->create(['asset_tag' => 'requestable']); $nonRequestableAsset = Asset::factory()->nonrequestable()->create(['asset_tag' => 'non-requestable']); @@ -28,7 +28,7 @@ class RequestableAssetTest extends TestCase ->assertResponseDoesNotContainInRows($nonRequestableAsset, 'asset_tag'); } - public function testRequestableAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled() + public function testRequestableAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Assets/Api/StoreAssetTest.php b/tests/Feature/Assets/Api/StoreAssetTest.php index a3f598163..5eba2d94b 100644 --- a/tests/Feature/Assets/Api/StoreAssetTest.php +++ b/tests/Feature/Assets/Api/StoreAssetTest.php @@ -16,14 +16,14 @@ use Tests\TestCase; class StoreAssetTest extends TestCase { - public function testRequiresPermissionToCreateAsset() + public function testRequiresPermissionToCreateAsset(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.assets.store')) ->assertForbidden(); } - public function testAllAssetAttributesAreStored() + public function testAllAssetAttributesAreStored(): void { $company = Company::factory()->create(); $location = Location::factory()->create(); @@ -83,7 +83,7 @@ class StoreAssetTest extends TestCase $this->assertEquals(10, $asset->warranty_months); } - public function testSetsLastAuditDateToMidnightOfProvidedDate() + public function testSetsLastAuditDateToMidnightOfProvidedDate(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.assets.store'), [ @@ -99,7 +99,7 @@ class StoreAssetTest extends TestCase $this->assertEquals('2023-09-03 00:00:00', $asset->last_audit_date); } - public function testLastAuditDateCanBeNull() + public function testLastAuditDateCanBeNull(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.assets.store'), [ @@ -115,7 +115,7 @@ class StoreAssetTest extends TestCase $this->assertNull($asset->last_audit_date); } - public function testNonDateUsedForLastAuditDateReturnsValidationError() + public function testNonDateUsedForLastAuditDateReturnsValidationError(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.assets.store'), [ @@ -129,7 +129,7 @@ class StoreAssetTest extends TestCase $this->assertNotNull($response->json('messages.last_audit_date')); } - public function testArchivedDepreciateAndPhysicalCanBeNull() + public function testArchivedDepreciateAndPhysicalCanBeNull(): void { $model = AssetModel::factory()->ipadModel()->create(); $status = Statuslabel::factory()->create(); @@ -154,7 +154,7 @@ class StoreAssetTest extends TestCase $this->assertEquals(0, $asset->depreciate); } - public function testArchivedDepreciateAndPhysicalCanBeEmpty() + public function testArchivedDepreciateAndPhysicalCanBeEmpty(): void { $model = AssetModel::factory()->ipadModel()->create(); $status = Statuslabel::factory()->create(); @@ -179,7 +179,7 @@ class StoreAssetTest extends TestCase $this->assertEquals(0, $asset->depreciate); } - public function testAssetEolDateIsCalculatedIfPurchaseDateSet() + public function testAssetEolDateIsCalculatedIfPurchaseDateSet(): void { $model = AssetModel::factory()->mbp13Model()->create(); $status = Statuslabel::factory()->create(); @@ -200,7 +200,7 @@ class StoreAssetTest extends TestCase $this->assertEquals('2024-01-01', $asset->asset_eol_date); } - public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet() + public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet(): void { $model = AssetModel::factory()->mbp13Model()->create(); $status = Statuslabel::factory()->create(); @@ -220,7 +220,7 @@ class StoreAssetTest extends TestCase $this->assertNull($asset->asset_eol_date); } - public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet() + public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet(): void { $model = AssetModel::factory()->mbp13Model()->create(); $status = Statuslabel::factory()->create(); @@ -242,7 +242,7 @@ class StoreAssetTest extends TestCase $this->assertTrue($asset->eol_explicit); } - public function testAssetGetsAssetTagWithAutoIncrement() + public function testAssetGetsAssetTagWithAutoIncrement(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -262,7 +262,7 @@ class StoreAssetTest extends TestCase $this->assertNotNull($asset->asset_tag); } - public function testAssetCreationFailsWithNoAssetTagOrAutoIncrement() + public function testAssetCreationFailsWithNoAssetTagOrAutoIncrement(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -278,7 +278,7 @@ class StoreAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testStoresPeriodAsDecimalSeparatorForPurchaseCost() + public function testStoresPeriodAsDecimalSeparatorForPurchaseCost(): void { $this->settings->set([ 'default_currency' => 'USD', @@ -300,7 +300,7 @@ class StoreAssetTest extends TestCase $this->assertEquals(12.34, $asset->purchase_cost); } - public function testStoresPeriodAsCommaSeparatorForPurchaseCost() + public function testStoresPeriodAsCommaSeparatorForPurchaseCost(): void { $this->settings->set([ 'default_currency' => 'EUR', @@ -322,7 +322,7 @@ class StoreAssetTest extends TestCase $this->assertEquals(12.34, $asset->purchase_cost); } - public function testUniqueSerialNumbersIsEnforcedWhenEnabled() + public function testUniqueSerialNumbersIsEnforcedWhenEnabled(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -350,7 +350,7 @@ class StoreAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testUniqueSerialNumbersIsNotEnforcedWhenDisabled() + public function testUniqueSerialNumbersIsNotEnforcedWhenDisabled(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -378,7 +378,7 @@ class StoreAssetTest extends TestCase ->assertStatusMessageIs('success'); } - public function testAssetTagsMustBeUniqueWhenUndeleted() + public function testAssetTagsMustBeUniqueWhenUndeleted(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -405,7 +405,7 @@ class StoreAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetTagsCanBeDuplicatedIfDeleted() + public function testAssetTagsCanBeDuplicatedIfDeleted(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -435,7 +435,7 @@ class StoreAssetTest extends TestCase ->assertStatusMessageIs('success'); } - public function testAnAssetCanBeCheckedOutToUserOnStore() + public function testAnAssetCanBeCheckedOutToUserOnStore(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -461,7 +461,7 @@ class StoreAssetTest extends TestCase $this->assertTrue($asset->assignedTo->is($userAssigned)); } - public function testAnAssetCanBeCheckedOutToLocationOnStore() + public function testAnAssetCanBeCheckedOutToLocationOnStore(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -487,7 +487,7 @@ class StoreAssetTest extends TestCase $this->assertTrue($asset->location->is($location)); } - public function testAnAssetCanBeCheckedOutToAssetOnStore() + public function testAnAssetCanBeCheckedOutToAssetOnStore(): void { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -514,7 +514,7 @@ class StoreAssetTest extends TestCase $this->assertTrue($asset->assignedAssets()->find($response['payload']['id'])->is($apiAsset)); } - public function testCompanyIdNeedsToBeInteger() + public function testCompanyIdNeedsToBeInteger(): void { $this->actingAsForApi(User::factory()->createAssets()->create()) ->postJson(route('api.assets.store'), [ @@ -526,7 +526,7 @@ class StoreAssetTest extends TestCase }); } - public function testEncryptedCustomFieldCanBeStored() + public function testEncryptedCustomFieldCanBeStored(): void { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -550,7 +550,7 @@ class StoreAssetTest extends TestCase $this->assertEquals('This is encrypted field', Crypt::decrypt($asset->{$field->db_column_name()})); } - public function testPermissionNeededToStoreEncryptedField() + public function testPermissionNeededToStoreEncryptedField(): void { // @todo: $this->markTestIncomplete(); diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index db5893b4d..65b89ede2 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -15,14 +15,14 @@ use Tests\TestCase; class UpdateAssetTest extends TestCase { - public function testThatANonExistentAssetIdReturnsError() + public function testThatANonExistentAssetIdReturnsError(): void { $this->actingAsForApi(User::factory()->editAssets()->createAssets()->create()) ->patchJson(route('api.assets.update', 123456789)) ->assertStatusMessageIs('error'); } - public function testRequiresPermissionToUpdateAsset() + public function testRequiresPermissionToUpdateAsset(): void { $asset = Asset::factory()->create(); @@ -31,7 +31,7 @@ class UpdateAssetTest extends TestCase ->assertForbidden(); } - public function testGivenPermissionUpdateAssetIsAllowed() + public function testGivenPermissionUpdateAssetIsAllowed(): void { $asset = Asset::factory()->create(); @@ -43,7 +43,7 @@ class UpdateAssetTest extends TestCase ->assertOk(); } - public function testAllAssetAttributesAreStored() + public function testAllAssetAttributesAreStored(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -103,7 +103,7 @@ class UpdateAssetTest extends TestCase $this->assertEquals('2023-09-03 00:00:00', $updatedAsset->last_audit_date); } - public function testAssetEolDateIsCalculatedIfPurchaseDateUpdated() + public function testAssetEolDateIsCalculatedIfPurchaseDateUpdated(): void { $asset = Asset::factory()->laptopMbp()->noPurchaseOrEolDate()->create(); @@ -120,7 +120,7 @@ class UpdateAssetTest extends TestCase $this->assertEquals('2024-01-01', $asset->asset_eol_date); } - public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet() + public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet(): void { $asset = Asset::factory()->laptopMbp()->noPurchaseOrEolDate()->create(); @@ -138,7 +138,7 @@ class UpdateAssetTest extends TestCase $this->assertEquals('2022-01-01', $asset->asset_eol_date); } - public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet() + public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -156,7 +156,7 @@ class UpdateAssetTest extends TestCase $this->assertTrue($asset->eol_explicit); } - public function testAssetTagCannotUpdateToNullValue() + public function testAssetTagCannotUpdateToNullValue(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -168,7 +168,7 @@ class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetTagCannotUpdateToEmptyStringValue() + public function testAssetTagCannotUpdateToEmptyStringValue(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -180,7 +180,7 @@ class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testModelIdCannotUpdateToNullValue() + public function testModelIdCannotUpdateToNullValue(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -192,7 +192,7 @@ class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testModelIdCannotUpdateToEmptyStringValue() + public function testModelIdCannotUpdateToEmptyStringValue(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -204,7 +204,7 @@ class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testStatusIdCannotUpdateToNullValue() + public function testStatusIdCannotUpdateToNullValue(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -216,7 +216,7 @@ class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testStatusIdCannotUpdateToEmptyStringValue() + public function testStatusIdCannotUpdateToEmptyStringValue(): void { $asset = Asset::factory()->laptopMbp()->create(); @@ -228,7 +228,7 @@ class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testIfRtdLocationIdIsSetWithoutLocationIdAssetReturnsToDefault() + public function testIfRtdLocationIdIsSetWithoutLocationIdAssetReturnsToDefault(): void { $location = Location::factory()->create(); $asset = Asset::factory()->laptopMbp()->create([ @@ -247,7 +247,7 @@ class UpdateAssetTest extends TestCase $this->assertTrue($asset->location->is($rtdLocation)); } - public function testIfLocationAndRtdLocationAreSetLocationIdIsLocation() + public function testIfLocationAndRtdLocationAreSetLocationIdIsLocation(): void { $location = Location::factory()->create(); $asset = Asset::factory()->laptopMbp()->create(); @@ -265,7 +265,7 @@ class UpdateAssetTest extends TestCase $this->assertTrue($asset->location->is($location)); } - public function testEncryptedCustomFieldCanBeUpdated() + public function testEncryptedCustomFieldCanBeUpdated(): void { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -284,7 +284,7 @@ class UpdateAssetTest extends TestCase $this->assertEquals('This is encrypted field', Crypt::decrypt($asset->{$field->db_column_name()})); } - public function testPermissionNeededToUpdateEncryptedField() + public function testPermissionNeededToUpdateEncryptedField(): void { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -308,7 +308,7 @@ class UpdateAssetTest extends TestCase $this->assertEquals("encrypted value should not change", Crypt::decrypt($asset->{$field->db_column_name()})); } - public function testCheckoutToUserOnAssetUpdate() + public function testCheckoutToUserOnAssetUpdate(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -327,7 +327,7 @@ class UpdateAssetTest extends TestCase $this->assertEquals($asset->assigned_type, 'App\Models\User'); } - public function testCheckoutToDeletedUserFailsOnAssetUpdate() + public function testCheckoutToDeletedUserFailsOnAssetUpdate(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -346,7 +346,7 @@ class UpdateAssetTest extends TestCase $this->assertNull($asset->assigned_type); } - public function testCheckoutToLocationOnAssetUpdate() + public function testCheckoutToLocationOnAssetUpdate(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -366,7 +366,7 @@ class UpdateAssetTest extends TestCase } - public function testCheckoutToDeletedLocationFailsOnAssetUpdate() + public function testCheckoutToDeletedLocationFailsOnAssetUpdate(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -385,7 +385,7 @@ class UpdateAssetTest extends TestCase $this->assertNull($asset->assigned_type); } - public function testCheckoutAssetOnAssetUpdate() + public function testCheckoutAssetOnAssetUpdate(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -406,7 +406,7 @@ class UpdateAssetTest extends TestCase } - public function testCheckoutToDeletedAssetFailsOnAssetUpdate() + public function testCheckoutToDeletedAssetFailsOnAssetUpdate(): void { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -425,7 +425,7 @@ class UpdateAssetTest extends TestCase $this->assertNull($asset->assigned_type); } - public function testAssetCannotBeUpdatedByUserInSeparateCompany() + public function testAssetCannotBeUpdatedByUserInSeparateCompany(): void { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php index d1375c539..1470341fb 100644 --- a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class BulkDeleteAssetsTest extends TestCase { - public function testUserWithPermissionsCanAccessPage() + public function testUserWithPermissionsCanAccessPage(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $assets = Asset::factory()->count(2)->create(); @@ -25,7 +25,7 @@ class BulkDeleteAssetsTest extends TestCase ])->assertStatus(200); } - public function testStandardUserCannotAccessPage() + public function testStandardUserCannotAccessPage(): void { $user = User::factory()->create(); $assets = Asset::factory()->count(2)->create(); @@ -38,7 +38,7 @@ class BulkDeleteAssetsTest extends TestCase ])->assertStatus(403); } - public function testPageRedirectFromInterstitialIfNoAssetsSelectedToDelete() + public function testPageRedirectFromInterstitialIfNoAssetsSelectedToDelete(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $response = $this->actingAs($user) @@ -52,7 +52,7 @@ class BulkDeleteAssetsTest extends TestCase $this->followRedirects($response)->assertSee('alert-danger'); } - public function testPageRedirectFromInterstitialIfNoAssetsSelectedToRestore() + public function testPageRedirectFromInterstitialIfNoAssetsSelectedToRestore(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $response = $this->actingAs($user) @@ -68,7 +68,7 @@ class BulkDeleteAssetsTest extends TestCase } - public function testBulkDeleteSelectedAssetsFromInterstitial() + public function testBulkDeleteSelectedAssetsFromInterstitial(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $assets = Asset::factory()->count(2)->create(); @@ -89,7 +89,7 @@ class BulkDeleteAssetsTest extends TestCase $this->followRedirects($response)->assertSee('alert-success'); } - public function testBulkRestoreSelectedAssetsFromInterstitial() + public function testBulkRestoreSelectedAssetsFromInterstitial(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $asset = Asset::factory()->deleted()->create(); @@ -116,7 +116,7 @@ class BulkDeleteAssetsTest extends TestCase } - public function testActionLogCreatedUponBulkDelete() + public function testActionLogCreatedUponBulkDelete(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $asset = Asset::factory()->create(); @@ -139,7 +139,7 @@ class BulkDeleteAssetsTest extends TestCase ); } - public function testActionLogCreatedUponBulkRestore() + public function testActionLogCreatedUponBulkRestore(): void { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $asset = Asset::factory()->deleted()->create(); diff --git a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php index 02d39a7b4..ffc23cf58 100644 --- a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php @@ -14,7 +14,7 @@ use Tests\TestCase; class BulkEditAssetsTest extends TestCase { - public function testUserWithPermissionsCanAccessPage() + public function testUserWithPermissionsCanAccessPage(): void { $user = User::factory()->viewAssets()->editAssets()->create(); $assets = Asset::factory()->count(2)->create(); @@ -29,7 +29,7 @@ class BulkEditAssetsTest extends TestCase ])->assertStatus(200); } - public function testStandardUserCannotAccessPage() + public function testStandardUserCannotAccessPage(): void { $user = User::factory()->create(); $assets = Asset::factory()->count(2)->create(); @@ -44,7 +44,7 @@ class BulkEditAssetsTest extends TestCase ])->assertStatus(403); } - public function testBulkEditAssetsAcceptsAllPossibleAttributes() + public function testBulkEditAssetsAcceptsAllPossibleAttributes(): void { // sets up all needed models and attributes on the assets // this test does not deal with custom fields - will be dealt with in separate cases @@ -109,7 +109,7 @@ class BulkEditAssetsTest extends TestCase }); } - public function testBulkEditAssetsAcceptsAndUpdatesUnencryptedCustomFields() + public function testBulkEditAssetsAcceptsAndUpdatesUnencryptedCustomFields(): void { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -141,7 +141,7 @@ class BulkEditAssetsTest extends TestCase }); } - public function testBulkEditAssetsAcceptsAndUpdatesEncryptedCustomFields() + public function testBulkEditAssetsAcceptsAndUpdatesEncryptedCustomFields(): void { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -165,7 +165,7 @@ class BulkEditAssetsTest extends TestCase }); } - public function testBulkEditAssetsRequiresAdminUserToUpdateEncryptedCustomFields() + public function testBulkEditAssetsRequiresAdminUserToUpdateEncryptedCustomFields(): void { $this->markIncompleteIfMySQL('Custom Fields tests do not work on mysql'); $edit_user = User::factory()->editAssets()->create(); diff --git a/tests/Feature/Assets/Ui/CloneAssetTest.php b/tests/Feature/Assets/Ui/CloneAssetTest.php index 18e1ccc5e..819f5cd16 100644 --- a/tests/Feature/Assets/Ui/CloneAssetTest.php +++ b/tests/Feature/Assets/Ui/CloneAssetTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class CloneAssetTest extends TestCase { - public function testPermissionRequiredToCreateAssetModel() + public function testPermissionRequiredToCreateAssetModel(): void { $asset = Asset::factory()->create(); $this->actingAs(User::factory()->create()) @@ -24,7 +24,7 @@ class CloneAssetTest extends TestCase $response->assertStatus(200); } - public function testAssetCanBeCloned() + public function testAssetCanBeCloned(): void { $asset_to_clone = Asset::factory()->create(['name'=>'Asset to clone']); $this->actingAs(User::factory()->createAssets()->create()) diff --git a/tests/Feature/Assets/Ui/EditAssetTest.php b/tests/Feature/Assets/Ui/EditAssetTest.php index 2c19e768b..2c75649d3 100644 --- a/tests/Feature/Assets/Ui/EditAssetTest.php +++ b/tests/Feature/Assets/Ui/EditAssetTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; class EditAssetTest extends TestCase { - public function testPermissionRequiredToViewLicense() + public function testPermissionRequiredToViewLicense(): void { $asset = Asset::factory()->create(); $this->actingAs(User::factory()->create()) @@ -27,7 +27,7 @@ class EditAssetTest extends TestCase $response->assertStatus(200); } - public function testAssetEditPostIsRedirectedIfRedirectSelectionIsIndex() + public function testAssetEditPostIsRedirectedIfRedirectSelectionIsIndex(): void { $asset = Asset::factory()->assignedToUser()->create(); @@ -45,7 +45,7 @@ class EditAssetTest extends TestCase ->assertRedirect(route('hardware.index')); $this->assertDatabaseHas('assets', ['asset_tag' => 'New Asset Tag']); } - public function testAssetEditPostIsRedirectedIfRedirectSelectionIsItem() + public function testAssetEditPostIsRedirectedIfRedirectSelectionIsItem(): void { $asset = Asset::factory()->create(); diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php index fc464242a..8d2d6d35b 100644 --- a/tests/Feature/Categories/Api/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -13,14 +13,14 @@ class CreateCategoriesTest extends TestCase { - public function testRequiresPermissionToCreateCategory() + public function testRequiresPermissionToCreateCategory(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.categories.store')) ->assertForbidden(); } - public function testCanCreateCategoryWithValidCategoryType() + public function testCanCreateCategoryWithValidCategoryType(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.categories.store'), [ @@ -41,7 +41,7 @@ class CreateCategoriesTest extends TestCase $this->assertEquals('accessory', $category->category_type); } - public function testCannotCreateCategoryWithoutCategoryType() + public function testCannotCreateCategoryWithoutCategoryType(): void { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.categories.store'), [ @@ -59,7 +59,7 @@ class CreateCategoriesTest extends TestCase } - public function testCannotCreateCategoryWithInvalidCategoryType() + public function testCannotCreateCategoryWithInvalidCategoryType(): void { $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.categories.store'), [ diff --git a/tests/Feature/Categories/Api/IndexCategoriesTest.php b/tests/Feature/Categories/Api/IndexCategoriesTest.php index d27bfbb06..04cbb516b 100644 --- a/tests/Feature/Categories/Api/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Api/IndexCategoriesTest.php @@ -10,14 +10,14 @@ use Tests\TestCase; class IndexCategoriesTest extends TestCase { - public function testViewingCategoryIndexRequiresPermission() + public function testViewingCategoryIndexRequiresPermission(): void { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.departments.index')) ->assertForbidden(); } - public function testCategoryIndexReturnsExpectedSearchResults() + public function testCategoryIndexReturnsExpectedSearchResults(): void { Category::factory()->count(10)->create(); Category::factory()->count(1)->forAssets()->create(['name' => 'My Test Category']); @@ -43,7 +43,7 @@ class IndexCategoriesTest extends TestCase } - public function testCategoryIndexReturnsExpectedCategories() + public function testCategoryIndexReturnsExpectedCategories(): void { $this->markTestIncomplete('Not sure why the category factory is generating one more than expected here.'); Category::factory()->count(3)->create(); diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php index 1a784c117..ebfdb862d 100644 --- a/tests/Feature/Categories/Api/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class UpdateCategoriesTest extends TestCase { - public function testCanUpdateCategoryViaPatchWithoutCategoryType() + public function testCanUpdateCategoryViaPatchWithoutCategoryType(): void { $category = Category::factory()->create(); @@ -30,7 +30,7 @@ class UpdateCategoriesTest extends TestCase } - public function testCannotUpdateCategoryViaPatchWithCategoryType() + public function testCannotUpdateCategoryViaPatchWithCategoryType(): void { $category = Category::factory()->create(); diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php index 87312ad25..358d3564c 100644 --- a/tests/Feature/Categories/Ui/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class CreateCategoriesTest extends TestCase { - public function testPermissionRequiredToCreateCategories() + public function testPermissionRequiredToCreateCategories(): void { $this->actingAs(User::factory()->create()) ->post(route('categories.store'), [ @@ -19,7 +19,7 @@ class CreateCategoriesTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateCategories() + public function testUserCanCreateCategories(): void { $this->assertFalse(Category::where('name', 'Test Category')->exists()); @@ -33,7 +33,7 @@ class CreateCategoriesTest extends TestCase $this->assertTrue(Category::where('name', 'Test Category')->exists()); } - public function testUserCannotCreateCategoriesWithInvalidType() + public function testUserCannotCreateCategoriesWithInvalidType(): void { $this->assertFalse(Category::where('name', 'Test Category')->exists()); diff --git a/tests/Feature/Categories/Ui/IndexCategoriesTest.php b/tests/Feature/Categories/Ui/IndexCategoriesTest.php index caacba99a..231377f7c 100644 --- a/tests/Feature/Categories/Ui/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Ui/IndexCategoriesTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class IndexCategoriesTest extends TestCase { - public function testPermissionRequiredToViewCategoryList() + public function testPermissionRequiredToViewCategoryList(): void { $this->actingAs(User::factory()->create()) ->get(route('categories.index')) ->assertForbidden(); } - public function testUserCanListCategories() + public function testUserCanListCategories(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('categories.index')) diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php index 98b67c7d3..abe2f3092 100644 --- a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class UpdateCategoriesTest extends TestCase { - public function testPermissionRequiredToStoreCategory() + public function testPermissionRequiredToStoreCategory(): void { $this->actingAs(User::factory()->create()) ->post(route('categories.store'), [ @@ -20,7 +20,7 @@ class UpdateCategoriesTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateCategories() + public function testUserCanCreateCategories(): void { $this->actingAs(User::factory()->superuser()->create()) ->post(route('categories.store'), [ @@ -34,7 +34,7 @@ class UpdateCategoriesTest extends TestCase $this->assertTrue(Category::where('name', 'Test Category')->exists()); } - public function testUserCanEditAssetCategory() + public function testUserCanEditAssetCategory(): void { $category = Category::factory()->forAssets()->create(['name' => 'Test Category']); $this->assertTrue(Category::where('name', 'Test Category')->exists()); @@ -52,7 +52,7 @@ class UpdateCategoriesTest extends TestCase } - public function testUserCanChangeCategoryTypeIfNoAssetsAssociated() + public function testUserCanChangeCategoryTypeIfNoAssetsAssociated(): void { $category = Category::factory()->forAssets()->create(['name' => 'Test Category']); $this->assertTrue(Category::where('name', 'Test Category')->exists()); @@ -72,7 +72,7 @@ class UpdateCategoriesTest extends TestCase } - public function testUserCannotChangeCategoryTypeIfAssetsAreAssociated() + public function testUserCannotChangeCategoryTypeIfAssetsAreAssociated(): void { Asset::factory()->count(5)->laptopMbp()->create(); $category = Category::where('name', 'Laptops')->first(); diff --git a/tests/Feature/Checkins/Api/AssetCheckinTest.php b/tests/Feature/Checkins/Api/AssetCheckinTest.php index 0e041fc73..d3b068e5b 100644 --- a/tests/Feature/Checkins/Api/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Api/AssetCheckinTest.php @@ -15,28 +15,28 @@ use Tests\TestCase; class AssetCheckinTest extends TestCase { - public function testCheckingInAssetRequiresCorrectPermission() + public function testCheckingInAssetRequiresCorrectPermission(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.asset.checkin', Asset::factory()->assignedToUser()->create())) ->assertForbidden(); } - public function testCannotCheckInNonExistentAsset() + public function testCannotCheckInNonExistentAsset(): void { $this->actingAsForApi(User::factory()->checkinAssets()->create()) ->postJson(route('api.asset.checkin', ['id' => 'does-not-exist'])) ->assertStatusMessageIs('error'); } - public function testCannotCheckInAssetThatIsNotCheckedOut() + public function testCannotCheckInAssetThatIsNotCheckedOut(): void { $this->actingAsForApi(User::factory()->checkinAssets()->create()) ->postJson(route('api.asset.checkin', Asset::factory()->create()->id)) ->assertStatusMessageIs('error'); } - public function testAssetCanBeCheckedIn() + public function testAssetCanBeCheckedIn(): void { Event::fake([CheckoutableCheckedIn::class]); @@ -76,7 +76,7 @@ class AssetCheckinTest extends TestCase }, 1); } - public function testLocationIsSetToRTDLocationByDefaultUponCheckin() + public function testLocationIsSetToRTDLocationByDefaultUponCheckin(): void { $rtdLocation = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create([ @@ -90,7 +90,7 @@ class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->location()->is($rtdLocation)); } - public function testDefaultLocationCanBeUpdatedUponCheckin() + public function testDefaultLocationCanBeUpdatedUponCheckin(): void { $location = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create(); @@ -104,7 +104,7 @@ class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->defaultLoc()->is($location)); } - public function testAssetsLicenseSeatsAreClearedUponCheckin() + public function testAssetsLicenseSeatsAreClearedUponCheckin(): void { $asset = Asset::factory()->assignedToUser()->create(); LicenseSeat::factory()->assignedToUser()->for($asset)->create(); @@ -117,7 +117,7 @@ class AssetCheckinTest extends TestCase $this->assertNull($asset->refresh()->licenseseats->first()->assigned_to); } - public function testLegacyLocationValuesSetToZeroAreUpdated() + public function testLegacyLocationValuesSetToZeroAreUpdated(): void { $asset = Asset::factory()->canBeInvalidUponCreation()->assignedToUser()->create([ 'rtd_location_id' => 0, @@ -131,7 +131,7 @@ class AssetCheckinTest extends TestCase $this->assertEquals($asset->location_id, $asset->rtd_location_id); } - public function testPendingCheckoutAcceptancesAreClearedUponCheckin() + public function testPendingCheckoutAcceptancesAreClearedUponCheckin(): void { $asset = Asset::factory()->assignedToUser()->create(); @@ -143,7 +143,7 @@ class AssetCheckinTest extends TestCase $this->assertFalse($acceptance->exists(), 'Acceptance was not deleted'); } - public function testCheckinTimeAndActionLogNoteCanBeSet() + public function testCheckinTimeAndActionLogNoteCanBeSet(): void { Event::fake(); diff --git a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php index 7a99b2ab5..4e078a1b4 100644 --- a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php @@ -12,7 +12,7 @@ use Tests\TestCase; class AccessoryCheckinTest extends TestCase { - public function testCheckingInAccessoryRequiresCorrectPermission() + public function testCheckingInAccessoryRequiresCorrectPermission(): void { $accessory = Accessory::factory()->checkedOutToUser()->create(); @@ -21,7 +21,7 @@ class AccessoryCheckinTest extends TestCase ->assertForbidden(); } - public function testAccessoryCanBeCheckedIn() + public function testAccessoryCanBeCheckedIn(): void { Event::fake([CheckoutableCheckedIn::class]); @@ -38,7 +38,7 @@ class AccessoryCheckinTest extends TestCase Event::assertDispatched(CheckoutableCheckedIn::class, 1); } - public function testEmailSentToUserIfSettingEnabled() + public function testEmailSentToUserIfSettingEnabled(): void { Notification::fake(); @@ -62,7 +62,7 @@ class AccessoryCheckinTest extends TestCase ); } - public function testEmailNotSentToUserIfSettingDisabled() + public function testEmailNotSentToUserIfSettingDisabled(): void { Notification::fake(); diff --git a/tests/Feature/Checkins/Ui/AssetCheckinTest.php b/tests/Feature/Checkins/Ui/AssetCheckinTest.php index f412d4439..a03a4c931 100644 --- a/tests/Feature/Checkins/Ui/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AssetCheckinTest.php @@ -15,7 +15,7 @@ use Tests\TestCase; class AssetCheckinTest extends TestCase { - public function testCheckingInAssetRequiresCorrectPermission() + public function testCheckingInAssetRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('hardware.checkin.store', [ @@ -24,7 +24,7 @@ class AssetCheckinTest extends TestCase ->assertForbidden(); } - public function testCannotCheckInAssetThatIsNotCheckedOut() + public function testCannotCheckInAssetThatIsNotCheckedOut(): void { $this->actingAs(User::factory()->checkinAssets()->create()) ->post(route('hardware.checkin.store', ['assetId' => Asset::factory()->create()->id])) @@ -33,7 +33,7 @@ class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testCannotStoreAssetCheckinThatIsNotCheckedOut() + public function testCannotStoreAssetCheckinThatIsNotCheckedOut(): void { $this->actingAs(User::factory()->checkinAssets()->create()) ->get(route('hardware.checkin.store', ['assetId' => Asset::factory()->create()->id])) @@ -42,7 +42,7 @@ class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testAssetCanBeCheckedIn() + public function testAssetCanBeCheckedIn(): void { Event::fake([CheckoutableCheckedIn::class]); @@ -85,7 +85,7 @@ class AssetCheckinTest extends TestCase }, 1); } - public function testLocationIsSetToRTDLocationByDefaultUponCheckin() + public function testLocationIsSetToRTDLocationByDefaultUponCheckin(): void { $rtdLocation = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create([ @@ -99,7 +99,7 @@ class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->location()->is($rtdLocation)); } - public function testDefaultLocationCanBeUpdatedUponCheckin() + public function testDefaultLocationCanBeUpdatedUponCheckin(): void { $location = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create(); @@ -113,7 +113,7 @@ class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->defaultLoc()->is($location)); } - public function testAssetsLicenseSeatsAreClearedUponCheckin() + public function testAssetsLicenseSeatsAreClearedUponCheckin(): void { $asset = Asset::factory()->assignedToUser()->create(); LicenseSeat::factory()->assignedToUser()->for($asset)->create(); @@ -126,7 +126,7 @@ class AssetCheckinTest extends TestCase $this->assertNull($asset->refresh()->licenseseats->first()->assigned_to); } - public function testLegacyLocationValuesSetToZeroAreUpdated() + public function testLegacyLocationValuesSetToZeroAreUpdated(): void { $asset = Asset::factory()->canBeInvalidUponCreation()->assignedToUser()->create([ 'rtd_location_id' => 0, @@ -140,7 +140,7 @@ class AssetCheckinTest extends TestCase $this->assertEquals($asset->location_id, $asset->rtd_location_id); } - public function testPendingCheckoutAcceptancesAreClearedUponCheckin() + public function testPendingCheckoutAcceptancesAreClearedUponCheckin(): void { $asset = Asset::factory()->assignedToUser()->create(); @@ -152,7 +152,7 @@ class AssetCheckinTest extends TestCase $this->assertFalse($acceptance->exists(), 'Acceptance was not deleted'); } - public function testCheckinTimeAndActionLogNoteCanBeSet() + public function testCheckinTimeAndActionLogNoteCanBeSet(): void { Event::fake([CheckoutableCheckedIn::class]); @@ -170,7 +170,7 @@ class AssetCheckinTest extends TestCase }, 1); } - public function testAssetCheckinPageIsRedirectedIfModelIsInvalid() + public function testAssetCheckinPageIsRedirectedIfModelIsInvalid(): void { $asset = Asset::factory()->assignedToUser()->create(); @@ -184,7 +184,7 @@ class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.show',['hardware' => $asset->id])); } - public function testAssetCheckinPagePostIsRedirectedIfModelIsInvalid() + public function testAssetCheckinPagePostIsRedirectedIfModelIsInvalid(): void { $asset = Asset::factory()->assignedToUser()->create(); $asset->model_id = 0; @@ -197,7 +197,7 @@ class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.show', ['hardware' => $asset->id])); } - public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $asset = Asset::factory()->assignedToUser()->create(); @@ -210,7 +210,7 @@ class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $asset = Asset::factory()->assignedToUser()->create(); diff --git a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php index 1213d6525..0da1282a4 100644 --- a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php +++ b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class ComponentCheckinTest extends TestCase { - public function testCheckingInComponentRequiresCorrectPermission() + public function testCheckingInComponentRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('components.checkin.store', [ @@ -18,7 +18,7 @@ class ComponentCheckinTest extends TestCase } - public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $component = Component::factory()->checkedOutToAsset()->create(); @@ -32,7 +32,7 @@ class ComponentCheckinTest extends TestCase ->assertRedirect(route('components.index')); } - public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $component = Component::factory()->checkedOutToAsset()->create(); diff --git a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php index e087cb442..550f26ad4 100644 --- a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php +++ b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class LicenseCheckinTest extends TestCase { - public function testCheckingInLicenseRequiresCorrectPermission() + public function testCheckingInLicenseRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('licenses.checkin.save', [ diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index fef38623f..13e366454 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -16,7 +16,7 @@ class AccessoryAcceptanceTest extends TestCase /** * This can be absorbed into a bigger test */ - public function testUsersNameIsIncludedInAccessoryAcceptedNotification() + public function testUsersNameIsIncludedInAccessoryAcceptedNotification(): void { Notification::fake(); @@ -49,7 +49,7 @@ class AccessoryAcceptanceTest extends TestCase /** * This can be absorbed into a bigger test */ - public function testUsersNameIsIncludedInAccessoryDeclinedNotification() + public function testUsersNameIsIncludedInAccessoryDeclinedNotification(): void { Notification::fake(); @@ -79,7 +79,7 @@ class AccessoryAcceptanceTest extends TestCase ); } - public function testUserIsNotAbleToAcceptAnAssetAssignedToADifferentUser() + public function testUserIsNotAbleToAcceptAnAssetAssignedToADifferentUser(): void { Notification::fake(); diff --git a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php index 2b37797fb..1b1b1c16b 100644 --- a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php @@ -11,14 +11,14 @@ use Tests\TestCase; class AccessoryCheckoutTest extends TestCase { - public function testCheckingOutAccessoryRequiresCorrectPermission() + public function testCheckingOutAccessoryRequiresCorrectPermission(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.accessories.checkout', Accessory::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutAccessory() + public function testValidationWhenCheckingOutAccessory(): void { $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) ->postJson(route('api.accessories.checkout', Accessory::factory()->create()), [ @@ -27,7 +27,7 @@ class AccessoryCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAccessoryMustBeAvailableWhenCheckingOut() + public function testAccessoryMustBeAvailableWhenCheckingOut(): void { $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) ->postJson(route('api.accessories.checkout', Accessory::factory()->withoutItemsRemaining()->create()), [ @@ -58,7 +58,7 @@ class AccessoryCheckoutTest extends TestCase ->json(); } - public function testAccessoryCanBeCheckedOutWithoutQty() + public function testAccessoryCanBeCheckedOutWithoutQty(): void { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -90,7 +90,7 @@ class AccessoryCheckoutTest extends TestCase ); } - public function testAccessoryCanBeCheckedOutWithQty() + public function testAccessoryCanBeCheckedOutWithQty(): void { $accessory = Accessory::factory()->create(['qty' => 20]); $user = User::factory()->create(); @@ -124,7 +124,7 @@ class AccessoryCheckoutTest extends TestCase ); } - public function testAccessoryCannotBeCheckedOutToInvalidUser() + public function testAccessoryCannotBeCheckedOutToInvalidUser(): void { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -143,7 +143,7 @@ class AccessoryCheckoutTest extends TestCase $this->assertFalse($accessory->checkouts()->where('assigned_type', User::class)->where('assigned_to', $user->id)->count() > 0); } - public function testUserSentNotificationUponCheckout() + public function testUserSentNotificationUponCheckout(): void { Notification::fake(); @@ -159,7 +159,7 @@ class AccessoryCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutAccessoryNotification::class); } - public function testActionLogCreatedUponCheckout() + public function testActionLogCreatedUponCheckout(): void { $accessory = Accessory::factory()->create(); $actor = User::factory()->checkoutAccessories()->create(); diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php index ded388964..b66ee2d02 100644 --- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php @@ -21,7 +21,7 @@ class AssetCheckoutTest extends TestCase Event::fake([CheckoutableCheckedOut::class]); } - public function testCheckingOutAssetRequiresCorrectPermission() + public function testCheckingOutAssetRequiresCorrectPermission(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.asset.checkout', Asset::factory()->create()), [ @@ -31,7 +31,7 @@ class AssetCheckoutTest extends TestCase ->assertForbidden(); } - public function testNonExistentAssetCannotBeCheckedOut() + public function testNonExistentAssetCannotBeCheckedOut(): void { $this->actingAsForApi(User::factory()->checkoutAssets()->create()) ->postJson(route('api.asset.checkout', 1000), [ @@ -41,7 +41,7 @@ class AssetCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetNotAvailableForCheckoutCannotBeCheckedOut() + public function testAssetNotAvailableForCheckoutCannotBeCheckedOut(): void { $assetAlreadyCheckedOut = Asset::factory()->assignedToUser()->create(); @@ -53,7 +53,7 @@ class AssetCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetCannotBeCheckedOutToItself() + public function testAssetCannotBeCheckedOutToItself(): void { $asset = Asset::factory()->create(); @@ -65,7 +65,7 @@ class AssetCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testValidationWhenCheckingOutAsset() + public function testValidationWhenCheckingOutAsset(): void { $this->actingAsForApi(User::factory()->checkoutAssets()->create()) ->postJson(route('api.asset.checkout', Asset::factory()->create()), []) @@ -74,7 +74,7 @@ class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled() + public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled(): void { $this->markTestIncomplete('This is not implemented'); } @@ -150,7 +150,7 @@ class AssetCheckoutTest extends TestCase } #[DataProvider('checkoutTargets')] - public function testAssetCanBeCheckedOut($data) + public function testAssetCanBeCheckedOut($data): void { ['checkout_type' => $type, 'target' => $target, 'expected_location' => $expectedLocation] = $data(); @@ -192,12 +192,12 @@ class AssetCheckoutTest extends TestCase }); } - public function testLicenseSeatsAreAssignedToUserUponCheckout() + public function testLicenseSeatsAreAssignedToUserUponCheckout(): void { $this->markTestIncomplete('This is not implemented'); } - public function testLastCheckoutUsesCurrentDateIfNotProvided() + public function testLastCheckoutUsesCurrentDateIfNotProvided(): void { $asset = Asset::factory()->create(['last_checkout' => now()->subMonth()]); diff --git a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php index 3bd0212fd..8a060572e 100644 --- a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php @@ -11,14 +11,14 @@ use Tests\TestCase; class ConsumableCheckoutTest extends TestCase { - public function testCheckingOutConsumableRequiresCorrectPermission() + public function testCheckingOutConsumableRequiresCorrectPermission(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.consumables.checkout', Consumable::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutConsumable() + public function testValidationWhenCheckingOutConsumable(): void { $this->actingAsForApi(User::factory()->checkoutConsumables()->create()) ->postJson(route('api.consumables.checkout', Consumable::factory()->create()), [ @@ -27,7 +27,7 @@ class ConsumableCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testConsumableMustBeAvailableWhenCheckingOut() + public function testConsumableMustBeAvailableWhenCheckingOut(): void { $this->actingAsForApi(User::factory()->checkoutConsumables()->create()) ->postJson(route('api.consumables.checkout', Consumable::factory()->withoutItemsRemaining()->create()), [ @@ -36,7 +36,7 @@ class ConsumableCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testConsumableCanBeCheckedOut() + public function testConsumableCanBeCheckedOut(): void { $consumable = Consumable::factory()->create(); $user = User::factory()->create(); @@ -49,7 +49,7 @@ class ConsumableCheckoutTest extends TestCase $this->assertTrue($user->consumables->contains($consumable)); } - public function testUserSentNotificationUponCheckout() + public function testUserSentNotificationUponCheckout(): void { Notification::fake(); @@ -65,7 +65,7 @@ class ConsumableCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutConsumableNotification::class); } - public function testActionLogCreatedUponCheckout() + public function testActionLogCreatedUponCheckout(): void {$consumable = Consumable::factory()->create(); $actor = User::factory()->checkoutConsumables()->create(); $user = User::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php index d4818ffc4..cefd84388 100644 --- a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php @@ -13,14 +13,14 @@ use Tests\TestCase; class AccessoryCheckoutTest extends TestCase { - public function testCheckingOutAccessoryRequiresCorrectPermission() + public function testCheckingOutAccessoryRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('accessories.checkout.store', Accessory::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutAccessory() + public function testValidationWhenCheckingOutAccessory(): void { $accessory = Accessory::factory()->create(); $response = $this->actingAs(User::factory()->superuser()->create()) @@ -35,7 +35,7 @@ class AccessoryCheckoutTest extends TestCase $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testAccessoryMustHaveAvailableItemsForCheckoutWhenCheckingOut() + public function testAccessoryMustHaveAvailableItemsForCheckoutWhenCheckingOut(): void { $accessory = Accessory::factory()->withoutItemsRemaining()->create(); @@ -52,7 +52,7 @@ class AccessoryCheckoutTest extends TestCase $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testAccessoryCanBeCheckedOutWithoutQuantity() + public function testAccessoryCanBeCheckedOutWithoutQuantity(): void { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -76,7 +76,7 @@ class AccessoryCheckoutTest extends TestCase ]); } - public function testAccessoryCanBeCheckedOutWithQuantity() + public function testAccessoryCanBeCheckedOutWithQuantity(): void { $accessory = Accessory::factory()->create(['qty'=>5]); $user = User::factory()->create(); @@ -102,7 +102,7 @@ class AccessoryCheckoutTest extends TestCase ]); } - public function testAccessoryCanBeCheckedOutToLocationWithQuantity() + public function testAccessoryCanBeCheckedOutToLocationWithQuantity(): void { $accessory = Accessory::factory()->create(['qty'=>5]); $location = Location::factory()->create(); @@ -128,7 +128,7 @@ class AccessoryCheckoutTest extends TestCase ]); } - public function testAccessoryCanBeCheckedOutToAssetWithQuantity() + public function testAccessoryCanBeCheckedOutToAssetWithQuantity(): void { $accessory = Accessory::factory()->create(['qty'=>5]); $asset = Asset::factory()->create(); @@ -154,7 +154,7 @@ class AccessoryCheckoutTest extends TestCase ]); } - public function testUserSentNotificationUponCheckout() + public function testUserSentNotificationUponCheckout(): void { Notification::fake(); @@ -171,7 +171,7 @@ class AccessoryCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutAccessoryNotification::class); } - public function testActionLogCreatedUponCheckout() + public function testActionLogCreatedUponCheckout(): void { $accessory = Accessory::factory()->create(); $actor = User::factory()->checkoutAccessories()->create(); @@ -200,7 +200,7 @@ class AccessoryCheckoutTest extends TestCase ); } - public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $accessory = Accessory::factory()->create(); @@ -216,7 +216,7 @@ class AccessoryCheckoutTest extends TestCase ->assertRedirect(route('accessories.index')); } - public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $accessory = Accessory::factory()->create(); @@ -233,7 +233,7 @@ class AccessoryCheckoutTest extends TestCase ->assertRedirect(route('accessories.show', ['accessory' => $accessory->id])); } - public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget() + public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget(): void { $user = User::factory()->create(); $accessory = Accessory::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php index f268a9385..bb191d1ac 100644 --- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php @@ -24,7 +24,7 @@ class AssetCheckoutTest extends TestCase Event::fake([CheckoutableCheckedOut::class]); } - public function testCheckingOutAssetRequiresCorrectPermission() + public function testCheckingOutAssetRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('hardware.checkout.store', Asset::factory()->create()), [ @@ -34,7 +34,7 @@ class AssetCheckoutTest extends TestCase ->assertForbidden(); } - public function testNonExistentAssetCannotBeCheckedOut() + public function testNonExistentAssetCannotBeCheckedOut(): void { $this->actingAs(User::factory()->checkoutAssets()->create()) ->post(route('hardware.checkout.store', 1000), [ @@ -48,7 +48,7 @@ class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testAssetNotAvailableForCheckoutCannotBeCheckedOut() + public function testAssetNotAvailableForCheckoutCannotBeCheckedOut(): void { $assetAlreadyCheckedOut = Asset::factory()->assignedToUser()->create(); @@ -63,7 +63,7 @@ class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testAssetCannotBeCheckedOutToItself() + public function testAssetCannotBeCheckedOutToItself(): void { $asset = Asset::factory()->create(); @@ -77,7 +77,7 @@ class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testValidationWhenCheckingOutAsset() + public function testValidationWhenCheckingOutAsset(): void { $this->actingAs(User::factory()->create()) ->post(route('hardware.checkout.store', Asset::factory()->create()), [ @@ -98,7 +98,7 @@ class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled() + public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -169,7 +169,7 @@ class AssetCheckoutTest extends TestCase } #[DataProvider('checkoutTargets')] - public function testAssetCanBeCheckedOut($data) + public function testAssetCanBeCheckedOut($data): void { ['checkout_type' => $type, 'target' => $target, 'expected_location' => $expectedLocation] = $data(); @@ -207,7 +207,7 @@ class AssetCheckoutTest extends TestCase }); } - public function testLicenseSeatsAreAssignedToUserUponCheckout() + public function testLicenseSeatsAreAssignedToUserUponCheckout(): void { $asset = Asset::factory()->create(); $seat = LicenseSeat::factory()->assignedToAsset($asset)->create(); @@ -224,7 +224,7 @@ class AssetCheckoutTest extends TestCase $this->assertTrue($user->fresh()->licenses->contains($seat->license)); } - public function testLastCheckoutUsesCurrentDateIfNotProvided() + public function testLastCheckoutUsesCurrentDateIfNotProvided(): void { $asset = Asset::factory()->create(['last_checkout' => now()->subMonth()]); @@ -239,7 +239,7 @@ class AssetCheckoutTest extends TestCase $this->assertTrue(Carbon::parse($asset->last_checkout)->diffInSeconds(now()) < 2); } - public function testAssetCheckoutPageIsRedirectedIfModelIsInvalid() + public function testAssetCheckoutPageIsRedirectedIfModelIsInvalid(): void { $asset = Asset::factory()->create(); @@ -253,7 +253,7 @@ class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.show',['hardware' => $asset->id])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $asset = Asset::factory()->create(); @@ -268,7 +268,7 @@ class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $asset = Asset::factory()->create(); @@ -284,7 +284,7 @@ class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.show', ['hardware' => $asset->id])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget() + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget(): void { $user = User::factory()->create(); $asset = Asset::factory()->create(); @@ -301,7 +301,7 @@ class AssetCheckoutTest extends TestCase ->assertRedirect(route('users.show', ['user' => $user])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget() + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget(): void { $target = Asset::factory()->create(); $asset = Asset::factory()->create(); @@ -318,7 +318,7 @@ class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.show', ['hardware' => $target])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsLocationTarget() + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsLocationTarget(): void { $target = Location::factory()->create(); $asset = Asset::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php index da285bebb..f0d82dbf0 100644 --- a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class ComponentsCheckoutTest extends TestCase { - public function testCheckingOutComponentRequiresCorrectPermission() + public function testCheckingOutComponentRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('components.checkout.store', [ @@ -18,7 +18,7 @@ class ComponentsCheckoutTest extends TestCase ->assertForbidden(); } - public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $component = Component::factory()->create(); @@ -33,7 +33,7 @@ class ComponentsCheckoutTest extends TestCase ->assertRedirect(route('components.index')); } - public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $component = Component::factory()->create(); @@ -48,7 +48,7 @@ class ComponentsCheckoutTest extends TestCase ->assertRedirect(route('components.show', ['component' => $component->id])); } - public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget() + public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget(): void { $asset = Asset::factory()->create(); $component = Component::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php index 90132fced..b27be6d48 100644 --- a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php @@ -13,14 +13,14 @@ use Tests\TestCase; class ConsumableCheckoutTest extends TestCase { - public function testCheckingOutConsumableRequiresCorrectPermission() + public function testCheckingOutConsumableRequiresCorrectPermission(): void { $this->actingAs(User::factory()->create()) ->post(route('consumables.checkout.store', Consumable::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutConsumable() + public function testValidationWhenCheckingOutConsumable(): void { $this->actingAs(User::factory()->checkoutConsumables()->create()) ->post(route('consumables.checkout.store', Consumable::factory()->create()), [ @@ -29,7 +29,7 @@ class ConsumableCheckoutTest extends TestCase ->assertSessionHas('error'); } - public function testConsumableMustBeAvailableWhenCheckingOut() + public function testConsumableMustBeAvailableWhenCheckingOut(): void { $this->actingAs(User::factory()->checkoutConsumables()->create()) ->post(route('consumables.checkout.store', Consumable::factory()->withoutItemsRemaining()->create()), [ @@ -38,7 +38,7 @@ class ConsumableCheckoutTest extends TestCase ->assertSessionHas('error'); } - public function testConsumableCanBeCheckedOut() + public function testConsumableCanBeCheckedOut(): void { $consumable = Consumable::factory()->create(); $user = User::factory()->create(); @@ -51,7 +51,7 @@ class ConsumableCheckoutTest extends TestCase $this->assertTrue($user->consumables->contains($consumable)); } - public function testUserSentNotificationUponCheckout() + public function testUserSentNotificationUponCheckout(): void { Notification::fake(); @@ -66,7 +66,7 @@ class ConsumableCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutConsumableNotification::class); } - public function testActionLogCreatedUponCheckout() + public function testActionLogCreatedUponCheckout(): void { $consumable = Consumable::factory()->create(); $actor = User::factory()->checkoutConsumables()->create(); @@ -93,7 +93,7 @@ class ConsumableCheckoutTest extends TestCase ); } - public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $consumable = Consumable::factory()->create(); @@ -108,7 +108,7 @@ class ConsumableCheckoutTest extends TestCase ->assertRedirect(route('consumables.index')); } - public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $consumable = Consumable::factory()->create(); @@ -123,7 +123,7 @@ class ConsumableCheckoutTest extends TestCase ->assertRedirect(route('consumables.show', ['consumable' => $consumable->id])); } - public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget() + public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget(): void { $user = User::factory()->create(); $consumable = Consumable::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php index 9511c3ae3..49f0ddae8 100644 --- a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class LicenseCheckoutTest extends TestCase { - public function testNotesAreStoredInActionLogOnCheckoutToAsset() + public function testNotesAreStoredInActionLogOnCheckoutToAsset(): void { $admin = User::factory()->superuser()->create(); $asset = Asset::factory()->create(); @@ -34,7 +34,7 @@ class LicenseCheckoutTest extends TestCase ]); } - public function testNotesAreStoredInActionLogOnCheckoutToUser() + public function testNotesAreStoredInActionLogOnCheckoutToUser(): void { $admin = User::factory()->superuser()->create(); $licenseSeat = LicenseSeat::factory()->create(); @@ -57,7 +57,7 @@ class LicenseCheckoutTest extends TestCase ]); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void { $license = License::factory()->create(); @@ -72,7 +72,7 @@ class LicenseCheckoutTest extends TestCase ->assertRedirect(route('licenses.index')); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void { $license = License::factory()->create(); @@ -86,7 +86,7 @@ class LicenseCheckoutTest extends TestCase ->assertRedirect(route('licenses.show', ['license' => $license->id])); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget() + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget(): void { $user = User::factory()->create(); $license = License::factory()->create(); @@ -100,7 +100,7 @@ class LicenseCheckoutTest extends TestCase ->assertStatus(302) ->assertRedirect(route('users.show', ['user' => $user->id])); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget() + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget(): void { $asset = Asset::factory()->create(); $license = License::factory()->create(); diff --git a/tests/Feature/Components/Api/ComponentIndexTest.php b/tests/Feature/Components/Api/ComponentIndexTest.php index 4260372c0..300f0ec8f 100644 --- a/tests/Feature/Components/Api/ComponentIndexTest.php +++ b/tests/Feature/Components/Api/ComponentIndexTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class ComponentIndexTest extends TestCase { - public function testComponentIndexAdheresToCompanyScoping() + public function testComponentIndexAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Components/Ui/ComponentIndexTest.php b/tests/Feature/Components/Ui/ComponentIndexTest.php index 41b733e04..1d8e2416c 100644 --- a/tests/Feature/Components/Ui/ComponentIndexTest.php +++ b/tests/Feature/Components/Ui/ComponentIndexTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class ComponentIndexTest extends TestCase { - public function testPermissionRequiredToViewComponentsList() + public function testPermissionRequiredToViewComponentsList(): void { $this->actingAs(User::factory()->create()) ->get(route('components.index')) ->assertForbidden(); } - public function testUserCanListComponents() + public function testUserCanListComponents(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('components.index')) diff --git a/tests/Feature/Console/MergeUsersTest.php b/tests/Feature/Console/MergeUsersTest.php index 4c43e6293..cbcc7007c 100644 --- a/tests/Feature/Console/MergeUsersTest.php +++ b/tests/Feature/Console/MergeUsersTest.php @@ -13,7 +13,7 @@ use Tests\TestCase; class MergeUsersTest extends TestCase { - public function testAssetsAreTransferredOnUserMerge() + public function testAssetsAreTransferredOnUserMerge(): void { $user1 = User::factory()->create(['username' => 'user1']); $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); diff --git a/tests/Feature/Console/OptimizeTest.php b/tests/Feature/Console/OptimizeTest.php index 8dd6f270f..6a3926e30 100644 --- a/tests/Feature/Console/OptimizeTest.php +++ b/tests/Feature/Console/OptimizeTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; class OptimizeTest extends TestCase { - public function testOptimizeSucceeds() + public function testOptimizeSucceeds(): void { $this->beforeApplicationDestroyed(function () { $this->artisan('config:clear'); diff --git a/tests/Feature/Consumables/Api/ConsumableIndexTest.php b/tests/Feature/Consumables/Api/ConsumableIndexTest.php index f1d3ad7f0..93ea6f54b 100644 --- a/tests/Feature/Consumables/Api/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Api/ConsumableIndexTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class ConsumableIndexTest extends TestCase { - public function testConsumableIndexAdheresToCompanyScoping() + public function testConsumableIndexAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -55,7 +55,7 @@ class ConsumableIndexTest extends TestCase ->assertResponseContainsInRows($consumableB); } - public function testConsumableIndexReturnsExpectedSearchResults() + public function testConsumableIndexReturnsExpectedSearchResults(): void { Consumable::factory()->count(10)->create(); Consumable::factory()->count(1)->create(['name' => 'My Test Consumable']); diff --git a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php index 1c1e05d4d..844c11d2c 100644 --- a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php +++ b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class ConsumableUpdateTest extends TestCase { - public function testCanUpdateConsumableViaPatchWithoutCategoryType() + public function testCanUpdateConsumableViaPatchWithoutCategoryType(): void { $consumable = Consumable::factory()->create(); @@ -28,7 +28,7 @@ class ConsumableUpdateTest extends TestCase } - public function testCannotUpdateConsumableViaPatchWithInvalidCategoryType() + public function testCannotUpdateConsumableViaPatchWithInvalidCategoryType(): void { $category = Category::factory()->create(['category_type' => 'asset']); $consumable = Consumable::factory()->create(); diff --git a/tests/Feature/Consumables/Api/ConsumableViewTest.php b/tests/Feature/Consumables/Api/ConsumableViewTest.php index c6410216e..d9218222a 100644 --- a/tests/Feature/Consumables/Api/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Api/ConsumableViewTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class ConsumableViewTest extends TestCase { - public function testConsumableViewAdheresToCompanyScoping() + public function testConsumableViewAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php index 3c438187c..16797c4ec 100644 --- a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class ConsumableIndexTest extends TestCase { - public function testPermissionRequiredToViewConsumablesList() + public function testPermissionRequiredToViewConsumablesList(): void { $this->actingAs(User::factory()->create()) ->get(route('consumables.index')) ->assertForbidden(); } - public function testUserCanListConsumables() + public function testUserCanListConsumables(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('consumables.index')) diff --git a/tests/Feature/Consumables/Ui/ConsumableViewTest.php b/tests/Feature/Consumables/Ui/ConsumableViewTest.php index 9633896c2..394be170d 100644 --- a/tests/Feature/Consumables/Ui/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableViewTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class ConsumableViewTest extends TestCase { - public function testPermissionRequiredToViewConsumable() + public function testPermissionRequiredToViewConsumable(): void { $consumable = Consumable::factory()->create(); $this->actingAs(User::factory()->create()) @@ -16,7 +16,7 @@ class ConsumableViewTest extends TestCase ->assertForbidden(); } - public function testUserCanListConsumables() + public function testUserCanListConsumables(): void { $consumable = Consumable::factory()->create(); $this->actingAs(User::factory()->superuser()->create()) diff --git a/tests/Feature/DashboardTest.php b/tests/Feature/DashboardTest.php index 4690a1390..6857ace7d 100644 --- a/tests/Feature/DashboardTest.php +++ b/tests/Feature/DashboardTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; class DashboardTest extends TestCase { - public function testUsersWithoutAdminAccessAreRedirected() + public function testUsersWithoutAdminAccessAreRedirected(): void { $this->actingAs(User::factory()->create()) ->get(route('home')) diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php index a8725c5ff..bda471196 100644 --- a/tests/Feature/Departments/Api/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -13,7 +13,7 @@ class CreateDepartmentsTest extends TestCase { - public function testRequiresPermissionToCreateDepartment() + public function testRequiresPermissionToCreateDepartment(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.departments.store')) diff --git a/tests/Feature/Departments/Api/DepartmentsIndexTest.php b/tests/Feature/Departments/Api/DepartmentsIndexTest.php index e3616e249..783719902 100644 --- a/tests/Feature/Departments/Api/DepartmentsIndexTest.php +++ b/tests/Feature/Departments/Api/DepartmentsIndexTest.php @@ -10,19 +10,19 @@ use Tests\TestCase; class DepartmentsIndexTest extends TestCase { - public function testViewingDepartmentIndexRequiresAuthentication() + public function testViewingDepartmentIndexRequiresAuthentication(): void { $this->getJson(route('api.departments.index'))->assertRedirect(); } - public function testViewingDepartmentIndexRequiresPermission() + public function testViewingDepartmentIndexRequiresPermission(): void { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.departments.index')) ->assertForbidden(); } - public function testDepartmentIndexReturnsExpectedDepartments() + public function testDepartmentIndexReturnsExpectedDepartments(): void { Department::factory()->count(3)->create(); @@ -42,7 +42,7 @@ class DepartmentsIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testDepartmentIndexAdheresToCompanyScoping() + public function testDepartmentIndexAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php index 2a6401e7f..654408755 100644 --- a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class UpdateDepartmentsTest extends TestCase { - public function testRequiresPermissionToEditDepartment() + public function testRequiresPermissionToEditDepartment(): void { $department = Department::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -18,7 +18,7 @@ class UpdateDepartmentsTest extends TestCase ->assertForbidden(); } - public function testCanUpdateDepartmentViaPatch() + public function testCanUpdateDepartmentViaPatch(): void { $department = Department::factory()->create(); diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php index 17045cbc0..ea4fdb674 100644 --- a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class CreateDepartmentsTest extends TestCase { - public function testPermissionRequiredToCreateDepartment() + public function testPermissionRequiredToCreateDepartment(): void { $this->actingAs(User::factory()->create()) ->post(route('departments.store'), [ @@ -19,7 +19,7 @@ class CreateDepartmentsTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateDepartments() + public function testUserCanCreateDepartments(): void { $this->assertFalse(Department::where('name', 'Test Department')->exists()); diff --git a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php index 461ec8fff..e35511b1f 100644 --- a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class IndexDepartmentsTest extends TestCase { - public function testPermissionRequiredToViewDepartmentsList() + public function testPermissionRequiredToViewDepartmentsList(): void { $this->actingAs(User::factory()->create()) ->get(route('departments.index')) ->assertForbidden(); } - public function testUserCanListDepartments() + public function testUserCanListDepartments(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('departments.index')) diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php index e6e614d32..919835e0a 100644 --- a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class UpdateDepartmentsTest extends TestCase { - public function testPermissionRequiredToStoreDepartment() + public function testPermissionRequiredToStoreDepartment(): void { $this->actingAs(User::factory()->create()) ->post(route('departments.store'), [ @@ -20,7 +20,7 @@ class UpdateDepartmentsTest extends TestCase } - public function testUserCanEditDepartments() + public function testUserCanEditDepartments(): void { $department = Department::factory()->create(['name' => 'Test Department']); $this->assertTrue(Department::where('name', 'Test Department')->exists()); diff --git a/tests/Feature/Groups/Api/StoreGroupTest.php b/tests/Feature/Groups/Api/StoreGroupTest.php index ebcbff71c..7619c5df6 100644 --- a/tests/Feature/Groups/Api/StoreGroupTest.php +++ b/tests/Feature/Groups/Api/StoreGroupTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; class StoreGroupTest extends TestCase { - public function testStoringGroupRequiresSuperAdminPermission() + public function testStoringGroupRequiresSuperAdminPermission(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.groups.store')) ->assertForbidden(); } - public function testCanStoreGroupWithPermissionsPassed() + public function testCanStoreGroupWithPermissionsPassed(): void { $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.groups.store'), [ @@ -37,7 +37,7 @@ class StoreGroupTest extends TestCase $this->assertEquals('0', $group->decodePermissions()['reports.view']); } - public function testStoringGroupWithoutPermissionPassed() + public function testStoringGroupWithoutPermissionPassed(): void { $superuser = User::factory()->superuser()->create(); $this->actingAsForApi($superuser) @@ -61,7 +61,7 @@ class StoreGroupTest extends TestCase ->assertOk(); } - public function testStoringGroupWithInvalidPermissionDropsBadPermission() + public function testStoringGroupWithInvalidPermissionDropsBadPermission(): void { $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.groups.store'), [ diff --git a/tests/Feature/Groups/Ui/IndexGroupTest.php b/tests/Feature/Groups/Ui/IndexGroupTest.php index a2d67f903..29ba058d1 100644 --- a/tests/Feature/Groups/Ui/IndexGroupTest.php +++ b/tests/Feature/Groups/Ui/IndexGroupTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; class IndexGroupTest extends TestCase { - public function testPermissionRequiredToViewGroupList() + public function testPermissionRequiredToViewGroupList(): void { $this->actingAs(User::factory()->create()) ->get(route('groups.index')) @@ -16,7 +16,7 @@ class IndexGroupTest extends TestCase //$this->followRedirects($response)->assertSee('sad-panda.png'); } - public function testUserCanListGroups() + public function testUserCanListGroups(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('groups.index')) diff --git a/tests/Feature/Licenses/Api/LicenseIndexTest.php b/tests/Feature/Licenses/Api/LicenseIndexTest.php index 1df786427..621489f8e 100644 --- a/tests/Feature/Licenses/Api/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Api/LicenseIndexTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class LicenseIndexTest extends TestCase { - public function testLicensesIndexAdheresToCompanyScoping() + public function testLicensesIndexAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Licenses/Ui/CreateLicenseTest.php b/tests/Feature/Licenses/Ui/CreateLicenseTest.php index f24c3bd2c..c07818f01 100644 --- a/tests/Feature/Licenses/Ui/CreateLicenseTest.php +++ b/tests/Feature/Licenses/Ui/CreateLicenseTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; class CreateLicenseTest extends TestCase { - public function testPermissionRequiredToViewLicense() + public function testPermissionRequiredToViewLicense(): void { $license = License::factory()->create(); $this->actingAs(User::factory()->create()) @@ -21,7 +21,7 @@ class CreateLicenseTest extends TestCase - public function testLicenseWithoutPurchaseDateFailsValidation() + public function testLicenseWithoutPurchaseDateFailsValidation(): void { $response = $this->actingAs(User::factory()->superuser()->create()) ->from(route('licenses.create')) diff --git a/tests/Feature/Licenses/Ui/LicenseIndexTest.php b/tests/Feature/Licenses/Ui/LicenseIndexTest.php index 3eb33e5ee..a370b8e86 100644 --- a/tests/Feature/Licenses/Ui/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Ui/LicenseIndexTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class LicenseIndexTest extends TestCase { - public function testPermissionRequiredToViewLicenseList() + public function testPermissionRequiredToViewLicenseList(): void { $this->actingAs(User::factory()->create()) ->get(route('licenses.index')) ->assertForbidden(); } - public function testUserCanListLicenses() + public function testUserCanListLicenses(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('licenses.index')) diff --git a/tests/Feature/Licenses/Ui/LicenseViewTest.php b/tests/Feature/Licenses/Ui/LicenseViewTest.php index 3b1f7830d..d0dd215ee 100644 --- a/tests/Feature/Licenses/Ui/LicenseViewTest.php +++ b/tests/Feature/Licenses/Ui/LicenseViewTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class LicenseViewTest extends TestCase { - public function testPermissionRequiredToViewLicense() + public function testPermissionRequiredToViewLicense(): void { $license = License::factory()->create(); $this->actingAs(User::factory()->create()) @@ -17,7 +17,7 @@ class LicenseViewTest extends TestCase ->assertForbidden(); } - public function testLicenseWithPurchaseDateDepreciatesCorrectly() + public function testLicenseWithPurchaseDateDepreciatesCorrectly(): void { $depreciation = Depreciation::factory()->create(['months' => 12]); $license = License::factory()->create(['depreciation_id' => $depreciation->id, 'purchase_date' => '2020-01-01']); diff --git a/tests/Feature/Livewire/CategoryEditFormTest.php b/tests/Feature/Livewire/CategoryEditFormTest.php index a439f544a..8f0948051 100644 --- a/tests/Feature/Livewire/CategoryEditFormTest.php +++ b/tests/Feature/Livewire/CategoryEditFormTest.php @@ -8,12 +8,12 @@ use Tests\TestCase; class CategoryEditFormTest extends TestCase { - public function testTheComponentCanRender() + public function testTheComponentCanRender(): void { Livewire::test(CategoryEditForm::class)->assertStatus(200); } - public function testSendEmailCheckboxIsCheckedOnLoadWhenSendEmailIsExistingSetting() + public function testSendEmailCheckboxIsCheckedOnLoadWhenSendEmailIsExistingSetting(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => true, @@ -22,7 +22,7 @@ class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckboxIsCheckedOnLoadWhenCategoryEulaSet() + public function testSendEmailCheckboxIsCheckedOnLoadWhenCategoryEulaSet(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -31,7 +31,7 @@ class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckboxIsCheckedOnLoadWhenUsingDefaultEula() + public function testSendEmailCheckboxIsCheckedOnLoadWhenUsingDefaultEula(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -40,7 +40,7 @@ class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckBoxIsUncheckedOnLoadWhenSendEmailIsFalseNoCategoryEulaSetAndNotUsingDefaultEula() + public function testSendEmailCheckBoxIsUncheckedOnLoadWhenSendEmailIsFalseNoCategoryEulaSetAndNotUsingDefaultEula(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -49,7 +49,7 @@ class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', false); } - public function testSendEmailCheckboxIsCheckedWhenCategoryEulaEntered() + public function testSendEmailCheckboxIsCheckedWhenCategoryEulaEntered(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -59,7 +59,7 @@ class CategoryEditFormTest extends TestCase ->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckboxCheckedAndDisabledAndEulaTextDisabledWhenUseDefaultEulaSelected() + public function testSendEmailCheckboxCheckedAndDisabledAndEulaTextDisabledWhenUseDefaultEulaSelected(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -71,7 +71,7 @@ class CategoryEditFormTest extends TestCase ->assertSet('sendCheckInEmailDisabled', true); } - public function testSendEmailCheckboxEnabledAndSetToOriginalValueWhenNoCategoryEulaAndNotUsingGlobalEula() + public function testSendEmailCheckboxEnabledAndSetToOriginalValueWhenNoCategoryEulaAndNotUsingGlobalEula(): void { Livewire::test(CategoryEditForm::class, [ 'eulaText' => 'Some Content', @@ -94,7 +94,7 @@ class CategoryEditFormTest extends TestCase ->assertSet('sendCheckInEmailDisabled', false); } - public function testEulaFieldEnabledOnLoadWhenNotUsingDefaultEula() + public function testEulaFieldEnabledOnLoadWhenNotUsingDefaultEula(): void { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php index 171508b72..6903c8dad 100644 --- a/tests/Feature/Locations/Api/CreateLocationsTest.php +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; class CreateLocationsTest extends TestCase { - public function testRequiresPermissionToCreateLocation() + public function testRequiresPermissionToCreateLocation(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.departments.store')) ->assertForbidden(); } - public function testCannotCreateNewLocationsWithTheSameName() + public function testCannotCreateNewLocationsWithTheSameName(): void { $location = Location::factory()->create(); $location2 = Location::factory()->create(); @@ -33,7 +33,7 @@ class CreateLocationsTest extends TestCase } - public function testUserCannotCreateLocationsThatAreTheirOwnParent() + public function testUserCannotCreateLocationsThatAreTheirOwnParent(): void { $location = Location::factory()->create(); diff --git a/tests/Feature/Locations/Api/DeleteLocationsTest.php b/tests/Feature/Locations/Api/DeleteLocationsTest.php index 270582c90..4041aa121 100644 --- a/tests/Feature/Locations/Api/DeleteLocationsTest.php +++ b/tests/Feature/Locations/Api/DeleteLocationsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class DeleteLocationsTest extends TestCase { - public function testErrorReturnedViaApiIfLocationDoesNotExist() + public function testErrorReturnedViaApiIfLocationDoesNotExist(): void { $this->actingAsForApi(User::factory()->superuser()->create()) ->deleteJson(route('api.users.destroy', 'invalid-id')) @@ -20,7 +20,7 @@ class DeleteLocationsTest extends TestCase ->json(); } - public function testErrorReturnedViaApiIfLocationIsAlreadyDeleted() + public function testErrorReturnedViaApiIfLocationIsAlreadyDeleted(): void { $location = Location::factory()->deletedLocation()->create(); $this->actingAsForApi(User::factory()->superuser()->create()) @@ -31,7 +31,7 @@ class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowLocationDeletionViaApiIfStillHasPeople() + public function testDisallowLocationDeletionViaApiIfStillHasPeople(): void { $location = Location::factory()->create(); User::factory()->count(5)->create(['location_id' => $location->id]); @@ -46,7 +46,7 @@ class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasChildLocations() + public function testDisallowUserDeletionViaApiIfStillHasChildLocations(): void { $parent = Location::factory()->create(); Location::factory()->count(5)->create(['parent_id' => $parent->id]); @@ -60,7 +60,7 @@ class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasAssetsAssigned() + public function testDisallowUserDeletionViaApiIfStillHasAssetsAssigned(): void { $location = Location::factory()->create(); Asset::factory()->count(5)->assignedToLocation($location)->create(); @@ -75,7 +75,7 @@ class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasAssetsAsLocation() + public function testDisallowUserDeletionViaApiIfStillHasAssetsAsLocation(): void { $location = Location::factory()->create(); Asset::factory()->count(5)->create(['location_id' => $location->id]); diff --git a/tests/Feature/Locations/Api/IndexLocationsTest.php b/tests/Feature/Locations/Api/IndexLocationsTest.php index 7b3b10463..d9dec89c8 100644 --- a/tests/Feature/Locations/Api/IndexLocationsTest.php +++ b/tests/Feature/Locations/Api/IndexLocationsTest.php @@ -10,19 +10,19 @@ use Tests\TestCase; class IndexLocationsTest extends TestCase { - public function testViewingLocationIndexRequiresAuthentication() + public function testViewingLocationIndexRequiresAuthentication(): void { $this->getJson(route('api.locations.index'))->assertRedirect(); } - public function testViewingLocationIndexRequiresPermission() + public function testViewingLocationIndexRequiresPermission(): void { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.locations.index')) ->assertForbidden(); } - public function testLocationIndexReturnsExpectedLocations() + public function testLocationIndexReturnsExpectedLocations(): void { Location::factory()->count(3)->create(); diff --git a/tests/Feature/Locations/Api/LocationsForSelectListTest.php b/tests/Feature/Locations/Api/LocationsForSelectListTest.php index f34b97892..d9e0c7a88 100644 --- a/tests/Feature/Locations/Api/LocationsForSelectListTest.php +++ b/tests/Feature/Locations/Api/LocationsForSelectListTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; class LocationsForSelectListTest extends TestCase { - public function testGettingLocationListRequiresProperPermission() + public function testGettingLocationListRequiresProperPermission(): void { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.locations.selectlist')) ->assertForbidden(); } - public function testLocationsReturned() + public function testLocationsReturned(): void { Location::factory()->create(); @@ -35,7 +35,7 @@ class LocationsForSelectListTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('results', 1)->etc()); } - public function testLocationsAreReturnedWhenUserIsUpdatingTheirProfileAndHasPermissionToUpdateLocation() + public function testLocationsAreReturnedWhenUserIsUpdatingTheirProfileAndHasPermissionToUpdateLocation(): void { $this->actingAsForApi(User::factory()->canEditOwnLocation()->create()) ->withHeader('referer', route('profile')) diff --git a/tests/Feature/Locations/Api/LocationsViewTest.php b/tests/Feature/Locations/Api/LocationsViewTest.php index 1d57e5826..15a320ed8 100644 --- a/tests/Feature/Locations/Api/LocationsViewTest.php +++ b/tests/Feature/Locations/Api/LocationsViewTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class LocationsViewTest extends TestCase { - public function testViewingLocationRequiresPermission() + public function testViewingLocationRequiresPermission(): void { $location = Location::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -17,7 +17,7 @@ class LocationsViewTest extends TestCase ->assertForbidden(); } - public function testViewingLocationAssetIndexRequiresPermission() + public function testViewingLocationAssetIndexRequiresPermission(): void { $location = Location::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -25,7 +25,7 @@ class LocationsViewTest extends TestCase ->assertForbidden(); } - public function testViewingLocationAssetIndex() + public function testViewingLocationAssetIndex(): void { $location = Location::factory()->create(); Asset::factory()->count(3)->assignedToLocation($location)->create(); diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php index a3dd8c228..ce9bd570c 100644 --- a/tests/Feature/Locations/Api/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; class UpdateLocationsTest extends TestCase { - public function testRequiresPermissionToEditLocation() + public function testRequiresPermissionToEditLocation(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.locations.store', Location::factory()->create())) ->assertForbidden(); } - public function testCanUpdateLocationViaPatch() + public function testCanUpdateLocationViaPatch(): void { $location = Location::factory()->create(); diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php index 5e229f104..4eb3a0d75 100644 --- a/tests/Feature/Locations/Ui/CreateLocationsTest.php +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class CreateLocationsTest extends TestCase { - public function testPermissionRequiredToCreateLocation() + public function testPermissionRequiredToCreateLocation(): void { $this->actingAs(User::factory()->create()) ->post(route('locations.store'), [ @@ -19,7 +19,7 @@ class CreateLocationsTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateLocations() + public function testUserCanCreateLocations(): void { $this->assertFalse(Location::where('name', 'Test Location')->exists()); diff --git a/tests/Feature/Locations/Ui/IndexLocationsTest.php b/tests/Feature/Locations/Ui/IndexLocationsTest.php index 43f117cb6..28aaeec6f 100644 --- a/tests/Feature/Locations/Ui/IndexLocationsTest.php +++ b/tests/Feature/Locations/Ui/IndexLocationsTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; class IndexLocationsTest extends TestCase { - public function testPermissionRequiredToViewLocationsList() + public function testPermissionRequiredToViewLocationsList(): void { $this->actingAs(User::factory()->create()) ->get(route('locations.index')) ->assertForbidden(); } - public function testUserCanListLocations() + public function testUserCanListLocations(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('locations.index')) diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php index 5359cd1b7..02fbb4813 100644 --- a/tests/Feature/Locations/Ui/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class UpdateLocationsTest extends TestCase { - public function testPermissionRequiredToStoreLocation() + public function testPermissionRequiredToStoreLocation(): void { $this->actingAs(User::factory()->create()) ->post(route('locations.store'), [ @@ -19,7 +19,7 @@ class UpdateLocationsTest extends TestCase } - public function testUserCanEditLocations() + public function testUserCanEditLocations(): void { $location = Location::factory()->create(['name' => 'Test Location']); $this->assertTrue(Location::where('name', 'Test Location')->exists()); @@ -36,7 +36,7 @@ class UpdateLocationsTest extends TestCase $this->assertTrue(Location::where('name', 'Test Location Edited')->exists()); } - public function testUserCannotEditLocationsToMakeThemTheirOwnParent() + public function testUserCannotEditLocationsToMakeThemTheirOwnParent(): void { $location = Location::factory()->create(); diff --git a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php index 449f65c7a..219cb528f 100644 --- a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php @@ -20,7 +20,7 @@ class EmailNotificationsUponCheckinTest extends TestCase Notification::fake(); } - public function testCheckInEmailSentToUserIfSettingEnabled() + public function testCheckInEmailSentToUserIfSettingEnabled(): void { $user = User::factory()->create(); $asset = Asset::factory()->assignedToUser($user)->create(); @@ -37,7 +37,7 @@ class EmailNotificationsUponCheckinTest extends TestCase ); } - public function testCheckInEmailNotSentToUserIfSettingDisabled() + public function testCheckInEmailNotSentToUserIfSettingDisabled(): void { $user = User::factory()->create(); $asset = Asset::factory()->assignedToUser($user)->create(); diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php index adaede07e..b6f6964ab 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php @@ -45,7 +45,7 @@ class SlackNotificationsUponCheckinTest extends TestCase ]; } - public function testAccessoryCheckinSendsSlackNotificationWhenSettingEnabled() + public function testAccessoryCheckinSendsSlackNotificationWhenSettingEnabled(): void { $this->settings->enableSlackWebhook(); @@ -57,7 +57,7 @@ class SlackNotificationsUponCheckinTest extends TestCase $this->assertSlackNotificationSent(CheckinAccessoryNotification::class); } - public function testAccessoryCheckinDoesNotSendSlackNotificationWhenSettingDisabled() + public function testAccessoryCheckinDoesNotSendSlackNotificationWhenSettingDisabled(): void { $this->settings->disableSlackWebhook(); @@ -70,7 +70,7 @@ class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('assetCheckInTargets')] - public function testAssetCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget) + public function testAssetCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void { $this->settings->enableSlackWebhook(); @@ -83,7 +83,7 @@ class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('assetCheckInTargets')] - public function testAssetCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) + public function testAssetCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void { $this->settings->disableSlackWebhook(); @@ -95,7 +95,7 @@ class SlackNotificationsUponCheckinTest extends TestCase $this->assertNoSlackNotificationSent(CheckinAssetNotification::class); } - public function testComponentCheckinDoesNotSendSlackNotification() + public function testComponentCheckinDoesNotSendSlackNotification(): void { $this->settings->enableSlackWebhook(); @@ -108,7 +108,7 @@ class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('licenseCheckInTargets')] - public function testLicenseCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget) + public function testLicenseCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void { $this->settings->enableSlackWebhook(); @@ -121,7 +121,7 @@ class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('licenseCheckInTargets')] - public function testLicenseCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) + public function testLicenseCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void { $this->settings->disableSlackWebhook(); diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php index 4f34da285..39af3f6c5 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php @@ -47,7 +47,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase ]; } - public function testAccessoryCheckoutSendsSlackNotificationWhenSettingEnabled() + public function testAccessoryCheckoutSendsSlackNotificationWhenSettingEnabled(): void { $this->settings->enableSlackWebhook(); @@ -59,7 +59,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertSlackNotificationSent(CheckoutAccessoryNotification::class); } - public function testAccessoryCheckoutDoesNotSendSlackNotificationWhenSettingDisabled() + public function testAccessoryCheckoutDoesNotSendSlackNotificationWhenSettingDisabled(): void { $this->settings->disableSlackWebhook(); @@ -72,7 +72,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('assetCheckoutTargets')] - public function testAssetCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget) + public function testAssetCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void { $this->settings->enableSlackWebhook(); @@ -85,7 +85,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('assetCheckoutTargets')] - public function testAssetCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) + public function testAssetCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void { $this->settings->disableSlackWebhook(); @@ -97,7 +97,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertNoSlackNotificationSent(CheckoutAssetNotification::class); } - public function testComponentCheckoutDoesNotSendSlackNotification() + public function testComponentCheckoutDoesNotSendSlackNotification(): void { $this->settings->enableSlackWebhook(); @@ -109,7 +109,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase Notification::assertNothingSent(); } - public function testConsumableCheckoutSendsSlackNotificationWhenSettingEnabled() + public function testConsumableCheckoutSendsSlackNotificationWhenSettingEnabled(): void { $this->settings->enableSlackWebhook(); @@ -121,7 +121,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase $this->assertSlackNotificationSent(CheckoutConsumableNotification::class); } - public function testConsumableCheckoutDoesNotSendSlackNotificationWhenSettingDisabled() + public function testConsumableCheckoutDoesNotSendSlackNotificationWhenSettingDisabled(): void { $this->settings->disableSlackWebhook(); @@ -134,7 +134,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('licenseCheckoutTargets')] - public function testLicenseCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget) + public function testLicenseCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void { $this->settings->enableSlackWebhook(); @@ -147,7 +147,7 @@ class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('licenseCheckoutTargets')] - public function testLicenseCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) + public function testLicenseCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void { $this->settings->disableSlackWebhook(); diff --git a/tests/Feature/Reporting/CustomReportTest.php b/tests/Feature/Reporting/CustomReportTest.php index 4d11cb23c..015675016 100644 --- a/tests/Feature/Reporting/CustomReportTest.php +++ b/tests/Feature/Reporting/CustomReportTest.php @@ -43,7 +43,7 @@ class CustomReportTest extends TestCase ); } - public function testCustomAssetReport() + public function testCustomAssetReport(): void { Asset::factory()->create(['name' => 'Asset A']); Asset::factory()->create(['name' => 'Asset B']); @@ -59,7 +59,7 @@ class CustomReportTest extends TestCase ->assertSeeTextInStreamedResponse('Asset B'); } - public function testCustomAssetReportAdheresToCompanyScoping() + public function testCustomAssetReportAdheresToCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -105,7 +105,7 @@ class CustomReportTest extends TestCase ->assertSeeTextInStreamedResponse('Asset B'); } - public function testCanLimitAssetsByLastCheckIn() + public function testCanLimitAssetsByLastCheckIn(): void { Asset::factory()->create(['name' => 'Asset A', 'last_checkin' => '2023-08-01']); Asset::factory()->create(['name' => 'Asset B', 'last_checkin' => '2023-08-02']); diff --git a/tests/Feature/Reporting/UnacceptedAssetReportTest.php b/tests/Feature/Reporting/UnacceptedAssetReportTest.php index b3ec0b2e0..8325661e2 100644 --- a/tests/Feature/Reporting/UnacceptedAssetReportTest.php +++ b/tests/Feature/Reporting/UnacceptedAssetReportTest.php @@ -44,14 +44,14 @@ class UnacceptedAssetReportTest extends TestCase } - public function testPermissionRequiredToViewUnacceptedAssetReport() + public function testPermissionRequiredToViewUnacceptedAssetReport(): void { $this->actingAs(User::factory()->create()) ->get(route('reports/unaccepted_assets')) ->assertForbidden(); } - public function testUserCanListUnacceptedAssets() + public function testUserCanListUnacceptedAssets(): void { $this->actingAs(User::factory()->superuser()->create()) ->get(route('reports/unaccepted_assets')) diff --git a/tests/Feature/Settings/BrandingSettingsTest.php b/tests/Feature/Settings/BrandingSettingsTest.php index 03e2b013f..cb8665f1c 100644 --- a/tests/Feature/Settings/BrandingSettingsTest.php +++ b/tests/Feature/Settings/BrandingSettingsTest.php @@ -12,7 +12,7 @@ use App\Models\Setting; class BrandingSettingsTest extends TestCase { - public function testSiteNameIsRequired() + public function testSiteNameIsRequired(): void { $response = $this->actingAs(User::factory()->superuser()->create()) ->from(route('settings.branding.index')) @@ -25,7 +25,7 @@ class BrandingSettingsTest extends TestCase $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testSiteNameCanBeSaved() + public function testSiteNameCanBeSaved(): void { $response = $this->actingAs(User::factory()->superuser()->create()) ->post(route('settings.branding.save', ['site_name' => 'My Awesome Site'])) @@ -38,7 +38,7 @@ class BrandingSettingsTest extends TestCase } - public function testLogoCanBeUploaded() + public function testLogoCanBeUploaded(): void { Storage::fake('public'); $setting = Setting::factory()->create(['logo' => null]); @@ -58,7 +58,7 @@ class BrandingSettingsTest extends TestCase Storage::disk('public')->assertExists($setting->logo); } - public function testLogoCanBeDeleted() + public function testLogoCanBeDeleted(): void { Storage::fake('public'); @@ -82,7 +82,7 @@ class BrandingSettingsTest extends TestCase //Storage::disk('public')->assertMissing($original_file); } - public function testEmailLogoCanBeUploaded() + public function testEmailLogoCanBeUploaded(): void { Storage::fake('public'); @@ -108,7 +108,7 @@ class BrandingSettingsTest extends TestCase // Storage::disk('public')->assertMissing($original_file); } - public function testEmailLogoCanBeDeleted() + public function testEmailLogoCanBeDeleted(): void { Storage::fake('public'); @@ -135,7 +135,7 @@ class BrandingSettingsTest extends TestCase } - public function testLabelLogoCanBeUploaded() + public function testLabelLogoCanBeUploaded(): void { Storage::fake('public'); @@ -164,7 +164,7 @@ class BrandingSettingsTest extends TestCase } - public function testLabelLogoCanBeDeleted() + public function testLabelLogoCanBeDeleted(): void { Storage::fake('public'); @@ -191,7 +191,7 @@ class BrandingSettingsTest extends TestCase } - public function testDefaultAvatarCanBeUploaded() + public function testDefaultAvatarCanBeUploaded(): void { Storage::fake('public'); @@ -213,7 +213,7 @@ class BrandingSettingsTest extends TestCase // Storage::disk('public')->assertMissing($original_file); } - public function testDefaultAvatarCanBeDeleted() + public function testDefaultAvatarCanBeDeleted(): void { Storage::fake('public'); @@ -238,7 +238,7 @@ class BrandingSettingsTest extends TestCase // Storage::disk('public')->assertMissing($original_file); } - public function testSnipeDefaultAvatarCanBeDeleted() + public function testSnipeDefaultAvatarCanBeDeleted(): void { $setting = Setting::getSettings()->first(); @@ -263,7 +263,7 @@ class BrandingSettingsTest extends TestCase } - public function testFaviconCanBeUploaded() + public function testFaviconCanBeUploaded(): void { $this->markTestIncomplete('This fails mimetype validation on the mock'); Storage::fake('public'); @@ -284,7 +284,7 @@ class BrandingSettingsTest extends TestCase Storage::disk('public')->assertExists('favicon.png'); } - public function testFaviconCanBeDeleted() + public function testFaviconCanBeDeleted(): void { $this->markTestIncomplete('This fails mimetype validation on the mock'); Storage::fake('public'); diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php index 196902ac5..9fea64dd6 100644 --- a/tests/Feature/Settings/ShowSetUpPageTest.php +++ b/tests/Feature/Settings/ShowSetUpPageTest.php @@ -302,7 +302,7 @@ class ShowSetUpPageTest extends TestCase $this->assertSeeDirectoryPermissionError(false); } - public function testInvalidTLSCertsOkWhenCheckingForEnvFile() + public function testInvalidTLSCertsOkWhenCheckingForEnvFile(): void { //set the weird bad SSL cert place - https://self-signed.badssl.com $this->markTestIncomplete("Not yet sure how to write this test, it requires messing with .env ..."); diff --git a/tests/Feature/Users/Api/DeleteUserTest.php b/tests/Feature/Users/Api/DeleteUserTest.php index 49625daac..2fab34d05 100644 --- a/tests/Feature/Users/Api/DeleteUserTest.php +++ b/tests/Feature/Users/Api/DeleteUserTest.php @@ -12,7 +12,7 @@ class DeleteUserTest extends TestCase { - public function testErrorReturnedViaApiIfUserDoesNotExist() + public function testErrorReturnedViaApiIfUserDoesNotExist(): void { $this->actingAsForApi(User::factory()->deleteUsers()->create()) ->deleteJson(route('api.users.destroy', 'invalid-id')) @@ -22,7 +22,7 @@ class DeleteUserTest extends TestCase ->json(); } - public function testErrorReturnedViaApiIfUserIsAlreadyDeleted() + public function testErrorReturnedViaApiIfUserIsAlreadyDeleted(): void { $user = User::factory()->deletedUser()->create(); $this->actingAsForApi(User::factory()->deleteUsers()->create()) @@ -34,7 +34,7 @@ class DeleteUserTest extends TestCase } - public function testDisallowUserDeletionViaApiIfStillManagingPeople() + public function testDisallowUserDeletionViaApiIfStillManagingPeople(): void { $manager = User::factory()->create(); User::factory()->count(5)->create(['manager_id' => $manager->id]); @@ -48,7 +48,7 @@ class DeleteUserTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillManagingLocations() + public function testDisallowUserDeletionViaApiIfStillManagingLocations(): void { $manager = User::factory()->create(); Location::factory()->count(5)->create(['manager_id' => $manager->id]); @@ -63,7 +63,7 @@ class DeleteUserTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasLicenses() + public function testDisallowUserDeletionViaApiIfStillHasLicenses(): void { $manager = User::factory()->create(); LicenseSeat::factory()->count(5)->create(['assigned_to' => $manager->id]); @@ -78,7 +78,7 @@ class DeleteUserTest extends TestCase ->json(); } - public function testDeniedPermissionsForDeletingUserViaApi() + public function testDeniedPermissionsForDeletingUserViaApi(): void { $this->actingAsForApi(User::factory()->create()) ->deleteJson(route('api.users.destroy', User::factory()->create())) @@ -86,7 +86,7 @@ class DeleteUserTest extends TestCase ->json(); } - public function testSuccessPermissionsForDeletingUserViaApi() + public function testSuccessPermissionsForDeletingUserViaApi(): void { $this->actingAsForApi(User::factory()->deleteUsers()->create()) ->deleteJson(route('api.users.destroy', User::factory()->create())) @@ -97,7 +97,7 @@ class DeleteUserTest extends TestCase } - public function testPermissionsForDeletingIfNotInSameCompanyAndNotSuperadmin() + public function testPermissionsForDeletingIfNotInSameCompanyAndNotSuperadmin(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -139,7 +139,7 @@ class DeleteUserTest extends TestCase } - public function testUsersCannotDeleteThemselves() + public function testUsersCannotDeleteThemselves(): void { $user = User::factory()->deleteUsers()->create(); $this->actingAsForApi($user) diff --git a/tests/Feature/Users/Api/RestoreUserTest.php b/tests/Feature/Users/Api/RestoreUserTest.php index 0ffac8f07..9ec087a87 100644 --- a/tests/Feature/Users/Api/RestoreUserTest.php +++ b/tests/Feature/Users/Api/RestoreUserTest.php @@ -12,7 +12,7 @@ class RestoreUserTest extends TestCase { - public function testErrorReturnedViaApiIfUserDoesNotExist() + public function testErrorReturnedViaApiIfUserDoesNotExist(): void { $this->actingAsForApi(User::factory()->deleteUsers()->create()) ->postJson(route('api.users.restore', 'invalid-id')) @@ -22,7 +22,7 @@ class RestoreUserTest extends TestCase ->json(); } - public function testErrorReturnedViaApiIfUserIsNotDeleted() + public function testErrorReturnedViaApiIfUserIsNotDeleted(): void { $user = User::factory()->create(); $this->actingAsForApi(User::factory()->deleteUsers()->create()) @@ -34,7 +34,7 @@ class RestoreUserTest extends TestCase } - public function testDeniedPermissionsForRestoringUserViaApi() + public function testDeniedPermissionsForRestoringUserViaApi(): void { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.users.restore', User::factory()->deletedUser()->create())) @@ -42,7 +42,7 @@ class RestoreUserTest extends TestCase ->json(); } - public function testSuccessPermissionsForRestoringUserViaApi() + public function testSuccessPermissionsForRestoringUserViaApi(): void { $deleted_user = User::factory()->deletedUser()->create(); @@ -57,7 +57,7 @@ class RestoreUserTest extends TestCase $this->assertNull($deleted_user->deleted_at); } - public function testPermissionsForRestoringIfNotInSameCompanyAndNotSuperadmin() + public function testPermissionsForRestoringIfNotInSameCompanyAndNotSuperadmin(): void { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Feature/Users/Api/UpdateUserTest.php b/tests/Feature/Users/Api/UpdateUserTest.php index 1c66bbdda..4f64998a6 100644 --- a/tests/Feature/Users/Api/UpdateUserTest.php +++ b/tests/Feature/Users/Api/UpdateUserTest.php @@ -12,7 +12,7 @@ use Tests\TestCase; class UpdateUserTest extends TestCase { - public function testCanUpdateUserViaPatch() + public function testCanUpdateUserViaPatch(): void { $admin = User::factory()->superuser()->create(); $manager = User::factory()->create(); @@ -82,7 +82,7 @@ class UpdateUserTest extends TestCase $this->assertTrue($user->groups->contains($groupB), 'Not part of expected group'); } - public function testApiUsersCanBeActivatedWithNumber() + public function testApiUsersCanBeActivatedWithNumber(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => 0]); @@ -95,7 +95,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testApiUsersCanBeActivatedWithBooleanTrue() + public function testApiUsersCanBeActivatedWithBooleanTrue(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => false]); @@ -108,7 +108,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testApiUsersCanBeDeactivatedWithNumber() + public function testApiUsersCanBeDeactivatedWithNumber(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -121,7 +121,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testApiUsersCanBeDeactivatedWithBooleanFalse() + public function testApiUsersCanBeDeactivatedWithBooleanFalse(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -134,7 +134,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testUsersScopedToCompanyDuringUpdateWhenMultipleFullCompanySupportEnabled() + public function testUsersScopedToCompanyDuringUpdateWhenMultipleFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -223,7 +223,7 @@ class UpdateUserTest extends TestCase ->json(); } - public function testUserGroupsAreOnlyUpdatedIfAuthenticatedUserIsSuperUser() + public function testUserGroupsAreOnlyUpdatedIfAuthenticatedUserIsSuperUser(): void { $groupToJoin = Group::factory()->create(); @@ -250,7 +250,7 @@ class UpdateUserTest extends TestCase $this->assertTrue($userToUpdateByToUserBySuperuser->refresh()->groups->contains($groupToJoin)); } - public function testUserGroupsCanBeClearedBySuperUser() + public function testUserGroupsCanBeClearedBySuperUser(): void { $normalUser = User::factory()->editUsers()->create(); $superUser = User::factory()->superuser()->create(); @@ -276,7 +276,7 @@ class UpdateUserTest extends TestCase $this->assertFalse($anotherUserToUpdate->refresh()->groups->contains($joinedGroup)); } - public function testNonSuperuserCannotUpdateOwnGroups() + public function testNonSuperuserCannotUpdateOwnGroups(): void { $groupToJoin = Group::factory()->create(); $user = User::factory()->editUsers()->create(); @@ -292,7 +292,7 @@ class UpdateUserTest extends TestCase } - public function testNonSuperuserCannotUpdateGroups() + public function testNonSuperuserCannotUpdateGroups(): void { $user = User::factory()->editUsers()->create(); $group = Group::factory()->create(); @@ -313,7 +313,7 @@ class UpdateUserTest extends TestCase } - public function testUsersGroupsAreNotClearedIfNoGroupPassedBySuperUser() + public function testUsersGroupsAreNotClearedIfNoGroupPassedBySuperUser(): void { $user = User::factory()->create(); $superUser = User::factory()->superuser()->create(); @@ -327,7 +327,7 @@ class UpdateUserTest extends TestCase $this->assertTrue($user->refresh()->groups->contains($group)); } - public function testMultipleGroupsUpdateBySuperUser() + public function testMultipleGroupsUpdateBySuperUser(): void { $user = User::factory()->create(); $superUser = User::factory()->superuser()->create(); diff --git a/tests/Feature/Users/Api/UserSearchTest.php b/tests/Feature/Users/Api/UserSearchTest.php index dc0ffdc80..351fd1267 100644 --- a/tests/Feature/Users/Api/UserSearchTest.php +++ b/tests/Feature/Users/Api/UserSearchTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class UserSearchTest extends TestCase { - public function testCanSearchByUserFirstAndLastName() + public function testCanSearchByUserFirstAndLastName(): void { User::factory()->create(['first_name' => 'Luke', 'last_name' => 'Skywalker']); User::factory()->create(['first_name' => 'Darth', 'last_name' => 'Vader']); @@ -24,7 +24,7 @@ class UserSearchTest extends TestCase $this->assertFalse($results->pluck('name')->contains(fn($text) => str_contains($text, 'Darth'))); } - public function testResultsWhenSearchingForActiveUsers() + public function testResultsWhenSearchingForActiveUsers(): void { User::factory()->create(['first_name' => 'Active', 'last_name' => 'User']); User::factory()->create(['first_name' => 'Deleted', 'last_name' => 'User'])->delete(); @@ -53,7 +53,7 @@ class UserSearchTest extends TestCase ); } - public function testResultsWhenSearchingForDeletedUsers() + public function testResultsWhenSearchingForDeletedUsers(): void { User::factory()->create(['first_name' => 'Active', 'last_name' => 'User']); User::factory()->create(['first_name' => 'Deleted', 'last_name' => 'User'])->delete(); @@ -82,7 +82,7 @@ class UserSearchTest extends TestCase ); } - public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled() + public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -110,7 +110,7 @@ class UserSearchTest extends TestCase ); } - public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled() + public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -145,7 +145,7 @@ class UserSearchTest extends TestCase ); } - public function testUsersIndexWhenInvalidSortFieldIsPassed() + public function testUsersIndexWhenInvalidSortFieldIsPassed(): void { $this->markIncompleteIfSqlite('This test is not compatible with SQLite'); diff --git a/tests/Feature/Users/Api/UsersForSelectListTest.php b/tests/Feature/Users/Api/UsersForSelectListTest.php index 1367f408d..c79650f60 100644 --- a/tests/Feature/Users/Api/UsersForSelectListTest.php +++ b/tests/Feature/Users/Api/UsersForSelectListTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class UsersForSelectListTest extends TestCase { - public function testUsersAreReturned() + public function testUsersAreReturned(): void { $users = User::factory()->superuser()->count(3)->create(); @@ -27,7 +27,7 @@ class UsersForSelectListTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('results', 3)->etc()); } - public function testUsersCanBeSearchedByFirstAndLastName() + public function testUsersCanBeSearchedByFirstAndLastName(): void { User::factory()->create(['first_name' => 'Luke', 'last_name' => 'Skywalker']); @@ -40,7 +40,7 @@ class UsersForSelectListTest extends TestCase $this->assertTrue($results->pluck('text')->contains(fn($text) => str_contains($text, 'Luke'))); } - public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled() + public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -68,7 +68,7 @@ class UsersForSelectListTest extends TestCase ); } - public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled() + public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Feature/Users/Api/ViewUserTest.php b/tests/Feature/Users/Api/ViewUserTest.php index 07346dbbb..e0ce78c11 100644 --- a/tests/Feature/Users/Api/ViewUserTest.php +++ b/tests/Feature/Users/Api/ViewUserTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; class ViewUserTest extends TestCase { - public function testCanReturnUser() + public function testCanReturnUser(): void { $user = User::factory()->create(); diff --git a/tests/Feature/Users/Ui/DeleteUserTest.php b/tests/Feature/Users/Ui/DeleteUserTest.php index da4c5a37e..e0defe742 100644 --- a/tests/Feature/Users/Ui/DeleteUserTest.php +++ b/tests/Feature/Users/Ui/DeleteUserTest.php @@ -14,7 +14,7 @@ use App\Models\Asset; class DeleteUserTest extends TestCase { - public function testUserCanDeleteAnotherUser() + public function testUserCanDeleteAnotherUser(): void { $user = User::factory()->deleteUsers()->viewUsers()->create(); $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create())->assertTrue($user->isDeletable()); @@ -28,7 +28,7 @@ class DeleteUserTest extends TestCase } - public function testErrorReturnedIfUserDoesNotExist() + public function testErrorReturnedIfUserDoesNotExist(): void { $response = $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create()) ->delete(route('users.destroy', ['user' => '40596803548609346'])) @@ -37,7 +37,7 @@ class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee(trans('alert-danger')); } - public function testErrorReturnedIfUserIsAlreadyDeleted() + public function testErrorReturnedIfUserIsAlreadyDeleted(): void { $user = User::factory()->deletedUser()->viewUsers()->create(); $response = $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create()) @@ -49,7 +49,7 @@ class DeleteUserTest extends TestCase } - public function testFmcsPermissionsToDeleteUser() + public function testFmcsPermissionsToDeleteUser(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -90,7 +90,7 @@ class DeleteUserTest extends TestCase } - public function testDisallowUserDeletionIfStillManagingPeople() + public function testDisallowUserDeletionIfStillManagingPeople(): void { $manager = User::factory()->create(); User::factory()->count(1)->create(['manager_id' => $manager->id]); @@ -105,7 +105,7 @@ class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } - public function testDisallowUserDeletionIfStillManagingLocations() + public function testDisallowUserDeletionIfStillManagingLocations(): void { $manager = User::factory()->create(); Location::factory()->count(2)->create(['manager_id' => $manager->id]); @@ -120,7 +120,7 @@ class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } - public function testDisallowUserDeletionIfStillHaveAccessories() + public function testDisallowUserDeletionIfStillHaveAccessories(): void { $user = User::factory()->create(); Accessory::factory()->count(3)->checkedOutToUser($user)->create(); @@ -135,7 +135,7 @@ class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } - public function testDisallowUserDeletionIfStillHaveLicenses() + public function testDisallowUserDeletionIfStillHaveLicenses(): void { $user = User::factory()->create(); LicenseSeat::factory()->count(4)->create(['assigned_to' => $user->id]); @@ -151,7 +151,7 @@ class DeleteUserTest extends TestCase } - public function testAllowUserDeletionIfNotManagingLocations() + public function testAllowUserDeletionIfNotManagingLocations(): void { $manager = User::factory()->create(); $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create())->assertTrue($manager->isDeletable()); @@ -165,14 +165,14 @@ class DeleteUserTest extends TestCase } - public function testDisallowUserDeletionIfNoDeletePermissions() + public function testDisallowUserDeletionIfNoDeletePermissions(): void { $manager = User::factory()->create(); Location::factory()->create(['manager_id' => $manager->id]); $this->actingAs(User::factory()->editUsers()->viewUsers()->create())->assertFalse($manager->isDeletable()); } - public function testDisallowUserDeletionIfTheyStillHaveAssets() + public function testDisallowUserDeletionIfTheyStillHaveAssets(): void { $user = User::factory()->create(); $asset = Asset::factory()->create(); @@ -195,7 +195,7 @@ class DeleteUserTest extends TestCase } - public function testUsersCannotDeleteThemselves() + public function testUsersCannotDeleteThemselves(): void { $manager = User::factory()->deleteUsers()->viewUsers()->create(); $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create())->assertTrue($manager->isDeletable()); diff --git a/tests/Feature/Users/Ui/MergeUsersTest.php b/tests/Feature/Users/Ui/MergeUsersTest.php index a9ae11171..c8bab343e 100644 --- a/tests/Feature/Users/Ui/MergeUsersTest.php +++ b/tests/Feature/Users/Ui/MergeUsersTest.php @@ -13,7 +13,7 @@ use Tests\TestCase; class MergeUsersTest extends TestCase { - public function testAssetsAreTransferredOnUserMerge() + public function testAssetsAreTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -39,7 +39,7 @@ class MergeUsersTest extends TestCase } - public function testLicensesAreTransferredOnUserMerge() + public function testLicensesAreTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -67,7 +67,7 @@ class MergeUsersTest extends TestCase } - public function testAccessoriesTransferredOnUserMerge() + public function testAccessoriesTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -95,7 +95,7 @@ class MergeUsersTest extends TestCase } - public function testConsumablesTransferredOnUserMerge() + public function testConsumablesTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -123,7 +123,7 @@ class MergeUsersTest extends TestCase } - public function testFilesAreTransferredOnUserMerge() + public function testFilesAreTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -151,7 +151,7 @@ class MergeUsersTest extends TestCase } - public function testAcceptancesAreTransferredOnUserMerge() + public function testAcceptancesAreTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -179,7 +179,7 @@ class MergeUsersTest extends TestCase } - public function testUserUpdateHistoryIsTransferredOnUserMerge() + public function testUserUpdateHistoryIsTransferredOnUserMerge(): void { $user1 = User::factory()->create(); $user2 = User::factory()->create(); diff --git a/tests/Feature/Users/Ui/UpdateUserTest.php b/tests/Feature/Users/Ui/UpdateUserTest.php index bef1d59a0..16caa7e6a 100644 --- a/tests/Feature/Users/Ui/UpdateUserTest.php +++ b/tests/Feature/Users/Ui/UpdateUserTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; class UpdateUserTest extends TestCase { - public function testUsersCanBeActivatedWithNumber() + public function testUsersCanBeActivatedWithNumber(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => 0]); @@ -22,7 +22,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testUsersCanBeActivatedWithBooleanTrue() + public function testUsersCanBeActivatedWithBooleanTrue(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => false]); @@ -37,7 +37,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testUsersCanBeDeactivatedWithNumber() + public function testUsersCanBeDeactivatedWithNumber(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -52,7 +52,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testUsersCanBeDeactivatedWithBooleanFalse() + public function testUsersCanBeDeactivatedWithBooleanFalse(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -67,7 +67,7 @@ class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testUsersUpdatingThemselvesDoNotDeactivateTheirAccount() + public function testUsersUpdatingThemselvesDoNotDeactivateTheirAccount(): void { $admin = User::factory()->superuser()->create(['activated' => true]); diff --git a/tests/Feature/Users/Ui/ViewUserTest.php b/tests/Feature/Users/Ui/ViewUserTest.php index c412e9e78..5cd705104 100644 --- a/tests/Feature/Users/Ui/ViewUserTest.php +++ b/tests/Feature/Users/Ui/ViewUserTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class ViewUserTest extends TestCase { - public function testPermissionsForUserDetailPage() + public function testPermissionsForUserDetailPage(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -29,7 +29,7 @@ class ViewUserTest extends TestCase ->assertStatus(200); } - public function testPermissionsForPrintAllInventoryPage() + public function testPermissionsForPrintAllInventoryPage(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -52,7 +52,7 @@ class ViewUserTest extends TestCase ->assertStatus(200); } - public function testUserWithoutCompanyPermissionsCannotSendInventory() + public function testUserWithoutCompanyPermissionsCannotSendInventory(): void { Notification::fake(); diff --git a/tests/Unit/AccessoryTest.php b/tests/Unit/AccessoryTest.php index ec931fad6..af05be10f 100644 --- a/tests/Unit/AccessoryTest.php +++ b/tests/Unit/AccessoryTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class AccessoryTest extends TestCase { - public function testAnAccessoryBelongsToACompany() + public function testAnAccessoryBelongsToACompany(): void { $accessory = Accessory::factory() ->create( @@ -20,7 +20,7 @@ class AccessoryTest extends TestCase $this->assertInstanceOf(Company::class, $accessory->company); } - public function testAnAccessoryHasALocation() + public function testAnAccessoryHasALocation(): void { $accessory = Accessory::factory() ->create( @@ -30,7 +30,7 @@ class AccessoryTest extends TestCase $this->assertInstanceOf(Location::class, $accessory->location); } - public function testAnAccessoryBelongsToACategory() + public function testAnAccessoryBelongsToACategory(): void { $accessory = Accessory::factory()->appleBtKeyboard() ->create( @@ -45,7 +45,7 @@ class AccessoryTest extends TestCase $this->assertEquals('accessory', $accessory->category->category_type); } - public function testAnAccessoryHasAManufacturer() + public function testAnAccessoryHasAManufacturer(): void { $accessory = Accessory::factory()->appleBtKeyboard()->create( [ diff --git a/tests/Unit/AssetMaintenanceTest.php b/tests/Unit/AssetMaintenanceTest.php index 46a0efdd7..b317de993 100644 --- a/tests/Unit/AssetMaintenanceTest.php +++ b/tests/Unit/AssetMaintenanceTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; class AssetMaintenanceTest extends TestCase { - public function testZerosOutWarrantyIfBlank() + public function testZerosOutWarrantyIfBlank(): void { $c = new AssetMaintenance; $c->is_warranty = ''; @@ -15,7 +15,7 @@ class AssetMaintenanceTest extends TestCase $this->assertTrue($c->is_warranty == 4); } - public function testSetsCostsAppropriately() + public function testSetsCostsAppropriately(): void { $c = new AssetMaintenance(); $c->cost = '0.00'; @@ -26,7 +26,7 @@ class AssetMaintenanceTest extends TestCase $this->assertTrue($c->cost === 9.5); } - public function testNullsOutNotesIfBlank() + public function testNullsOutNotesIfBlank(): void { $c = new AssetMaintenance; $c->notes = ''; @@ -35,7 +35,7 @@ class AssetMaintenanceTest extends TestCase $this->assertTrue($c->notes === 'This is a long note'); } - public function testNullsOutCompletionDateIfBlankOrInvalid() + public function testNullsOutCompletionDateIfBlankOrInvalid(): void { $c = new AssetMaintenance; $c->completion_date = ''; diff --git a/tests/Unit/AssetModelTest.php b/tests/Unit/AssetModelTest.php index 4cc62e20a..961560b5a 100644 --- a/tests/Unit/AssetModelTest.php +++ b/tests/Unit/AssetModelTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class AssetModelTest extends TestCase { - public function testAnAssetModelContainsAssets() + public function testAnAssetModelContainsAssets(): void { $category = Category::factory()->create([ 'category_type' => 'asset' diff --git a/tests/Unit/AssetTest.php b/tests/Unit/AssetTest.php index ef0da1a1b..619e34cc8 100644 --- a/tests/Unit/AssetTest.php +++ b/tests/Unit/AssetTest.php @@ -10,7 +10,7 @@ use App\Models\Setting; class AssetTest extends TestCase { - public function testAutoIncrement() + public function testAutoIncrement(): void { $this->settings->enableAutoIncrement(); @@ -22,7 +22,7 @@ class AssetTest extends TestCase } - public function testAutoIncrementCollision() + public function testAutoIncrementCollision(): void { $this->settings->enableAutoIncrement(); @@ -34,7 +34,7 @@ class AssetTest extends TestCase $this->assertFalse($b->save()); } - public function testAutoIncrementDouble() + public function testAutoIncrementDouble(): void { // make one asset with the autoincrement *ONE* higher than the next auto-increment // make sure you can then still make another @@ -53,7 +53,7 @@ class AssetTest extends TestCase $this->assertEquals($c->asset_tag, $final_number); } - public function testAutoIncrementGapAndBackfill() + public function testAutoIncrementGapAndBackfill(): void { // make one asset 3 higher than the next auto-increment // manually make one that's 1 lower than that @@ -82,7 +82,7 @@ class AssetTest extends TestCase $this->assertEquals($final->asset_tag, $final_result); } - public function testPrefixlessAutoincrementBackfill() + public function testPrefixlessAutoincrementBackfill(): void { // TODO: COPYPASTA FROM above, is there a way to still run this test but not have it be so duplicative? $this->settings->enableAutoIncrement()->set(['auto_increment_prefix' => '']); @@ -109,7 +109,7 @@ class AssetTest extends TestCase $this->assertEquals($final->asset_tag, $final_result); } - public function testUnzerofilledPrefixlessAutoincrementBackfill() + public function testUnzerofilledPrefixlessAutoincrementBackfill(): void { // TODO: COPYPASTA FROM above (AGAIN), is there a way to still run this test but not have it be so duplicative? $this->settings->enableAutoIncrement()->set(['auto_increment_prefix' => '','zerofill_count' => 0]); @@ -136,7 +136,7 @@ class AssetTest extends TestCase $this->assertEquals($final->asset_tag, $final_result); } - public function testAutoIncrementBIG() + public function testAutoIncrementBIG(): void { $this->settings->enableAutoIncrement(); @@ -153,7 +153,7 @@ class AssetTest extends TestCase $this->assertEquals(Setting::getSettings()->next_auto_tag_base, $matches[0] + 1, "Next auto increment number should be the last normally-saved one plus one, but isn't"); } - public function testAutoIncrementAlmostBIG() + public function testAutoIncrementAlmostBIG(): void { // TODO: this looks pretty close to the one above, could we maybe squish them together? $this->settings->enableAutoIncrement(); @@ -170,7 +170,7 @@ class AssetTest extends TestCase } - public function testWarrantyExpiresAttribute() + public function testWarrantyExpiresAttribute(): void { $asset = Asset::factory() diff --git a/tests/Unit/CategoryTest.php b/tests/Unit/CategoryTest.php index 391e29155..1a7bfd1ba 100644 --- a/tests/Unit/CategoryTest.php +++ b/tests/Unit/CategoryTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class CategoryTest extends TestCase { - public function testFailsEmptyValidation() + public function testFailsEmptyValidation(): void { // An Asset requires a name, a qty, and a category_id. $a = Category::create(); @@ -24,7 +24,7 @@ class CategoryTest extends TestCase } } - public function testACategoryCanHaveAssets() + public function testACategoryCanHaveAssets(): void { $category = Category::factory()->assetDesktopCategory()->create(); diff --git a/tests/Unit/CompanyScopingTest.php b/tests/Unit/CompanyScopingTest.php index ff55e8305..084c223e6 100644 --- a/tests/Unit/CompanyScopingTest.php +++ b/tests/Unit/CompanyScopingTest.php @@ -29,7 +29,7 @@ class CompanyScopingTest extends TestCase } #[DataProvider('models')] - public function testCompanyScoping($model) + public function testCompanyScoping($model): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -69,7 +69,7 @@ class CompanyScopingTest extends TestCase $this->assertCanSee($modelB); } - public function testAssetMaintenanceCompanyScoping() + public function testAssetMaintenanceCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -109,7 +109,7 @@ class CompanyScopingTest extends TestCase $this->assertCanSee($assetMaintenanceForCompanyB); } - public function testLicenseSeatCompanyScoping() + public function testLicenseSeatCompanyScoping(): void { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Unit/ComponentTest.php b/tests/Unit/ComponentTest.php index df8f64771..f3f0f50eb 100644 --- a/tests/Unit/ComponentTest.php +++ b/tests/Unit/ComponentTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class ComponentTest extends TestCase { - public function testAComponentBelongsToACompany() + public function testAComponentBelongsToACompany(): void { $component = Component::factory() ->create( @@ -20,14 +20,14 @@ class ComponentTest extends TestCase $this->assertInstanceOf(Company::class, $component->company); } - public function testAComponentHasALocation() + public function testAComponentHasALocation(): void { $component = Component::factory() ->create(['location_id' => Location::factory()->create()->id]); $this->assertInstanceOf(Location::class, $component->location); } - public function testAComponentBelongsToACategory() + public function testAComponentBelongsToACategory(): void { $component = Component::factory()->ramCrucial4() ->create( diff --git a/tests/Unit/CustomFieldTest.php b/tests/Unit/CustomFieldTest.php index d5704d8aa..fe2c1e88b 100644 --- a/tests/Unit/CustomFieldTest.php +++ b/tests/Unit/CustomFieldTest.php @@ -10,14 +10,14 @@ use Tests\TestCase; */ class CustomFieldTest extends TestCase { - public function testFormat() + public function testFormat(): void { $customfield = CustomField::factory()->make(['format' => 'IP']); $this->assertEquals($customfield->getAttributes()['format'], CustomField::PREDEFINED_FORMATS['IP']); //this seems undocumented... $this->assertEquals($customfield->format, 'IP'); } - public function testDbNameAscii() + public function testDbNameAscii(): void { $customfield = new CustomField(); $customfield->name = 'My hovercraft is full of eels'; @@ -26,7 +26,7 @@ class CustomFieldTest extends TestCase } // Western Europe - public function testDbNameLatin() + public function testDbNameLatin(): void { $customfield = new CustomField(); $customfield->name = 'My hovercraft is full of eels'; @@ -35,7 +35,7 @@ class CustomFieldTest extends TestCase } // Asian - public function testDbNameChinese() + public function testDbNameChinese(): void { $customfield = new CustomField(); $customfield->name = '我的氣墊船裝滿了鱔魚'; @@ -47,7 +47,7 @@ class CustomFieldTest extends TestCase } } - public function testDbNameJapanese() + public function testDbNameJapanese(): void { $customfield = new CustomField(); $customfield->name = '私のホバークラフトは鰻でいっぱいです'; @@ -59,7 +59,7 @@ class CustomFieldTest extends TestCase } } - public function testDbNameKorean() + public function testDbNameKorean(): void { $customfield = new CustomField(); $customfield->name = '내 호버크라프트는 장어로 가득 차 있어요'; @@ -72,7 +72,7 @@ class CustomFieldTest extends TestCase } // Nordic languages - public function testDbNameNonLatinEuro() + public function testDbNameNonLatinEuro(): void { $customfield = new CustomField(); $customfield->name = 'Mój poduszkowiec jest pełen węgorzy'; @@ -85,7 +85,7 @@ class CustomFieldTest extends TestCase } // - public function testDbNameTurkish() + public function testDbNameTurkish(): void { $customfield = new CustomField(); $customfield->name = 'Hoverkraftım yılan balığı dolu'; @@ -97,7 +97,7 @@ class CustomFieldTest extends TestCase } } - public function testDbNameArabic() + public function testDbNameArabic(): void { $customfield = new CustomField(); $customfield->name = 'حَوّامتي مُمْتِلئة بِأَنْقَلَيْسون'; diff --git a/tests/Unit/DepreciationTest.php b/tests/Unit/DepreciationTest.php index 4dd842227..8cd51b3e2 100644 --- a/tests/Unit/DepreciationTest.php +++ b/tests/Unit/DepreciationTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class DepreciationTest extends TestCase { - public function testADepreciationHasModels() + public function testADepreciationHasModels(): void { $depreciation = Depreciation::factory()->create(); @@ -26,7 +26,7 @@ class DepreciationTest extends TestCase $this->assertEquals(5, $depreciation->models->count()); } - public function testADepreciationHasLicenses() + public function testADepreciationHasLicenses(): void { $depreciation = Depreciation::factory()->create(); diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index 2fb1c58e2..83dddbc6a 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -10,17 +10,17 @@ use Tests\TestCase; class HelperTest extends TestCase { - public function testDefaultChartColorsMethodHandlesHighValues() + public function testDefaultChartColorsMethodHandlesHighValues(): void { $this->assertIsString(Helper::defaultChartColors(1000)); } - public function testDefaultChartColorsMethodHandlesNegativeNumbers() + public function testDefaultChartColorsMethodHandlesNegativeNumbers(): void { $this->assertIsString(Helper::defaultChartColors(-1)); } - public function testParseCurrencyMethod() + public function testParseCurrencyMethod(): void { $this->settings->set(['default_currency' => 'USD']); $this->assertSame(12.34, Helper::ParseCurrency('USD 12.34')); @@ -28,7 +28,7 @@ class HelperTest extends TestCase $this->settings->set(['digit_separator' => '1.234,56']); $this->assertSame(12.34, Helper::ParseCurrency('12,34')); } - public function testGetRedirectOptionMethod() + public function testGetRedirectOptionMethod(): void { $test_data = [ 'Option target: redirect for user assigned to ' => [ diff --git a/tests/Unit/LdapTest.php b/tests/Unit/LdapTest.php index 65bdbe627..596f4d5fe 100644 --- a/tests/Unit/LdapTest.php +++ b/tests/Unit/LdapTest.php @@ -11,7 +11,7 @@ class LdapTest extends TestCase { use \phpmock\phpunit\PHPMock; - public function testConnect() + public function testConnect(): void { $this->settings->enableLdap(); @@ -31,14 +31,14 @@ class LdapTest extends TestCase // with/without ignore cert validation? // test (and mock) ldap_start_tls() ? - public function testBindAdmin() + public function testBindAdmin(): void { $this->settings->enableLdap(); $this->getFunctionMock("App\\Models", "ldap_bind")->expects($this->once())->willReturn(true); $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testBindBad() + public function testBindBad(): void { $this->settings->enableLdap(); $this->getFunctionMock("App\\Models", "ldap_bind")->expects($this->once())->willReturn(false); @@ -49,7 +49,7 @@ class LdapTest extends TestCase } // other test cases - test donked password? - public function testAnonymousBind() + public function testAnonymousBind(): void { //todo - would be nice to introspect somehow to make sure the right parameters were passed? $this->settings->enableAnonymousLdap(); @@ -57,7 +57,7 @@ class LdapTest extends TestCase $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testBadAnonymousBind() + public function testBadAnonymousBind(): void { $this->settings->enableAnonymousLdap(); $this->getFunctionMock("App\\Models", "ldap_bind")->expects($this->once())->willReturn(false); @@ -67,7 +67,7 @@ class LdapTest extends TestCase $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testBadEncryptedPassword() + public function testBadEncryptedPassword(): void { $this->settings->enableBadPasswordLdap(); @@ -75,7 +75,7 @@ class LdapTest extends TestCase $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testFindAndBind() + public function testFindAndBind(): void { $this->settings->enableLdap(); @@ -105,7 +105,7 @@ class LdapTest extends TestCase $this->assertEqualsCanonicalizing(["count" =>1,0 =>['sn' => 'Surname','firstname' => 'FirstName']],$results); } - public function testFindAndBindBadPassword() + public function testFindAndBindBadPassword(): void { $this->settings->enableLdap(); @@ -126,7 +126,7 @@ class LdapTest extends TestCase $this->assertFalse($results); } - public function testFindAndBindCannotFindSelf() + public function testFindAndBindCannotFindSelf(): void { $this->settings->enableLdap(); @@ -147,7 +147,7 @@ class LdapTest extends TestCase //maybe should do an AD test as well? - public function testFindLdapUsers() + public function testFindLdapUsers(): void { $this->settings->enableLdap(); @@ -170,7 +170,7 @@ class LdapTest extends TestCase $this->assertEqualsCanonicalizing(["count" => 1], $results); } - public function testFindLdapUsersPaginated() + public function testFindLdapUsersPaginated(): void { $this->settings->enableLdap(); diff --git a/tests/Unit/Listeners/LogListenerTest.php b/tests/Unit/Listeners/LogListenerTest.php index 011a5c51a..18f72cfa1 100644 --- a/tests/Unit/Listeners/LogListenerTest.php +++ b/tests/Unit/Listeners/LogListenerTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; class LogListenerTest extends TestCase { - public function testLogsEntryOnCheckoutableCheckedOut() + public function testLogsEntryOnCheckoutableCheckedOut(): void { $asset = Asset::factory()->create(); $checkedOutTo = User::factory()->create(); diff --git a/tests/Unit/LocationTest.php b/tests/Unit/LocationTest.php index 3fded9e56..c8780e396 100644 --- a/tests/Unit/LocationTest.php +++ b/tests/Unit/LocationTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; class LocationTest extends TestCase { - public function testPassesIfNotSelfParent() + public function testPassesIfNotSelfParent(): void { $a = Location::factory()->make([ 'name' => 'Test Location', @@ -17,7 +17,7 @@ class LocationTest extends TestCase $this->assertTrue($a->isValid()); } - public function testFailsIfSelfParent() + public function testFailsIfSelfParent(): void { $a = Location::factory()->make([ 'name' => 'Test Location', diff --git a/tests/Unit/Models/Company/CompanyTest.php b/tests/Unit/Models/Company/CompanyTest.php index 6fd17e554..ad803fe6e 100644 --- a/tests/Unit/Models/Company/CompanyTest.php +++ b/tests/Unit/Models/Company/CompanyTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; class CompanyTest extends TestCase { - public function testACompanyCanHaveUsers() + public function testACompanyCanHaveUsers(): void { $company = Company::factory()->create(); $user = User::factory() diff --git a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php index 6d77c8873..0c4aeeb5f 100644 --- a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php +++ b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; class GetIdForCurrentUserTest extends TestCase { - public function testReturnsProvidedValueWhenFullCompanySupportDisabled() + public function testReturnsProvidedValueWhenFullCompanySupportDisabled(): void { $this->settings->disableMultipleFullCompanySupport(); @@ -16,7 +16,7 @@ class GetIdForCurrentUserTest extends TestCase $this->assertEquals(1000, Company::getIdForCurrentUser(1000)); } - public function testReturnsProvidedValueForSuperUsersWhenFullCompanySupportEnabled() + public function testReturnsProvidedValueForSuperUsersWhenFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -24,7 +24,7 @@ class GetIdForCurrentUserTest extends TestCase $this->assertEquals(2000, Company::getIdForCurrentUser(2000)); } - public function testReturnsNonSuperUsersCompanyIdWhenFullCompanySupportEnabled() + public function testReturnsNonSuperUsersCompanyIdWhenFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); @@ -32,7 +32,7 @@ class GetIdForCurrentUserTest extends TestCase $this->assertEquals(2000, Company::getIdForCurrentUser(1000)); } - public function testReturnsProvidedValueForNonSuperUserWithoutCompanyIdWhenFullCompanySupportEnabled() + public function testReturnsProvidedValueForNonSuperUserWithoutCompanyIdWhenFullCompanySupportEnabled(): void { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Unit/Models/Labels/FieldOptionTest.php b/tests/Unit/Models/Labels/FieldOptionTest.php index 6616ab230..05788d2d8 100644 --- a/tests/Unit/Models/Labels/FieldOptionTest.php +++ b/tests/Unit/Models/Labels/FieldOptionTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; class FieldOptionTest extends TestCase { - public function testItDisplaysAssignedToProperly() + public function testItDisplaysAssignedToProperly(): void { // "assignedTo" is a "special" value that can be used in the new label engine $fieldOption = FieldOption::fromString('Assigned To=assignedTo'); diff --git a/tests/Unit/NotificationTest.php b/tests/Unit/NotificationTest.php index 8005759a1..7a61fd709 100644 --- a/tests/Unit/NotificationTest.php +++ b/tests/Unit/NotificationTest.php @@ -12,7 +12,7 @@ use Tests\TestCase; class NotificationTest extends TestCase { - public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA() + public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA(): void { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(); diff --git a/tests/Unit/SnipeModelTest.php b/tests/Unit/SnipeModelTest.php index 2bc81da61..fe2a336ca 100644 --- a/tests/Unit/SnipeModelTest.php +++ b/tests/Unit/SnipeModelTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; class SnipeModelTest extends TestCase { - public function testSetsPurchaseDatesAppropriately() + public function testSetsPurchaseDatesAppropriately(): void { $c = new SnipeModel; $c->purchase_date = ''; @@ -15,7 +15,7 @@ class SnipeModelTest extends TestCase $this->assertTrue($c->purchase_date === '2016-03-25 12:35:50'); } - public function testSetsPurchaseCostsAppropriately() + public function testSetsPurchaseCostsAppropriately(): void { $c = new SnipeModel; $c->purchase_cost = '0.00'; @@ -26,7 +26,7 @@ class SnipeModelTest extends TestCase $this->assertTrue($c->purchase_cost === 9.5); } - public function testNullsBlankLocationIdsButNotOthers() + public function testNullsBlankLocationIdsButNotOthers(): void { $c = new SnipeModel; $c->location_id = ''; @@ -35,7 +35,7 @@ class SnipeModelTest extends TestCase $this->assertTrue($c->location_id == 5); } - public function testNullsBlankCategoriesButNotOthers() + public function testNullsBlankCategoriesButNotOthers(): void { $c = new SnipeModel; $c->category_id = ''; @@ -44,7 +44,7 @@ class SnipeModelTest extends TestCase $this->assertTrue($c->category_id == 1); } - public function testNullsBlankSuppliersButNotOthers() + public function testNullsBlankSuppliersButNotOthers(): void { $c = new SnipeModel; $c->supplier_id = ''; @@ -53,7 +53,7 @@ class SnipeModelTest extends TestCase $this->assertTrue($c->supplier_id == 4); } - public function testNullsBlankDepreciationsButNotOthers() + public function testNullsBlankDepreciationsButNotOthers(): void { $c = new SnipeModel; $c->depreciation_id = ''; @@ -62,7 +62,7 @@ class SnipeModelTest extends TestCase $this->assertTrue($c->depreciation_id == 4); } - public function testNullsBlankManufacturersButNotOthers() + public function testNullsBlankManufacturersButNotOthers(): void { $c = new SnipeModel; $c->manufacturer_id = ''; diff --git a/tests/Unit/SnipeTranslatorTest.php b/tests/Unit/SnipeTranslatorTest.php index d374bf913..55ecaaa3c 100644 --- a/tests/Unit/SnipeTranslatorTest.php +++ b/tests/Unit/SnipeTranslatorTest.php @@ -11,17 +11,17 @@ class SnipeTranslatorTest extends TestCase // WARNING: If these translation strings are updated, these tests will start to fail. Update them as appropriate. - public function testBasic() + public function testBasic(): void { $this->assertEquals('This user has admin privileges',trans('general.admin_tooltip',[],'en-US')); } - public function testPortuguese() + public function testPortuguese(): void { $this->assertEquals('Acessório',trans('general.accessory',[],'pt-PT')); } - public function testFallback() + public function testFallback(): void { $this->assertEquals( 'This user has admin privileges', @@ -30,7 +30,7 @@ class SnipeTranslatorTest extends TestCase ); } - public function testBackupString() + public function testBackupString(): void { $this->assertEquals( 'Ingen sikkerhetskopier ble gjort ennå', @@ -39,7 +39,7 @@ class SnipeTranslatorTest extends TestCase ); } - public function testBackupFallback() + public function testBackupFallback(): void { $this->assertEquals( 'No backups were made yet', @@ -49,7 +49,7 @@ class SnipeTranslatorTest extends TestCase } - public function testTransChoiceSingular() + public function testTransChoiceSingular(): void { $this->assertEquals( '1 Consumível', @@ -57,7 +57,7 @@ class SnipeTranslatorTest extends TestCase ); } - public function testTransChoicePlural() + public function testTransChoicePlural(): void { $this->assertEquals( '2 Consumíveis', @@ -65,7 +65,7 @@ class SnipeTranslatorTest extends TestCase ); } - public function testTotallyBogusKey() + public function testTotallyBogusKey(): void { $this->assertEquals( 'bogus_key', @@ -74,7 +74,7 @@ class SnipeTranslatorTest extends TestCase ); } - public function testReplacements() { + public function testReplacements(): void { $this->assertEquals( 'Artigos alocados a Some Name Here', trans('admin/users/general.assets_user',['name' => 'Some Name Here'],'pt-PT'), @@ -82,7 +82,7 @@ class SnipeTranslatorTest extends TestCase ); } - public function testNonlegacyBackupLocale() { + public function testNonlegacyBackupLocale(): void { //Spatie backup *usually* uses two-character locales, but pt-BR is an exception $this->assertEquals( 'Mensagem de exceção: MESSAGE', diff --git a/tests/Unit/StatuslabelTest.php b/tests/Unit/StatuslabelTest.php index fe5f3cacc..e5dbc3824 100644 --- a/tests/Unit/StatuslabelTest.php +++ b/tests/Unit/StatuslabelTest.php @@ -6,37 +6,37 @@ use Tests\TestCase; class StatuslabelTest extends TestCase { - public function testRTDStatuslabelAdd() + public function testRTDStatuslabelAdd(): void { $statuslabel = Statuslabel::factory()->rtd()->create(); $this->assertModelExists($statuslabel); } - public function testPendingStatuslabelAdd() + public function testPendingStatuslabelAdd(): void { $statuslabel = Statuslabel::factory()->pending()->create(); $this->assertModelExists($statuslabel); } - public function testArchivedStatuslabelAdd() + public function testArchivedStatuslabelAdd(): void { $statuslabel = Statuslabel::factory()->archived()->create(); $this->assertModelExists($statuslabel); } - public function testOutForRepairStatuslabelAdd() + public function testOutForRepairStatuslabelAdd(): void { $statuslabel = Statuslabel::factory()->outForRepair()->create(); $this->assertModelExists($statuslabel); } - public function testBrokenStatuslabelAdd() + public function testBrokenStatuslabelAdd(): void { $statuslabel = Statuslabel::factory()->broken()->create(); $this->assertModelExists($statuslabel); } - public function testLostStatuslabelAdd() + public function testLostStatuslabelAdd(): void { $statuslabel = Statuslabel::factory()->lost()->create(); $this->assertModelExists($statuslabel); diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index e089fc402..99e7b322d 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; class UserTest extends TestCase { - public function testFirstNameSplit() + public function testFirstNameSplit(): void { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_firstname = 'Natalia'; @@ -16,7 +16,7 @@ class UserTest extends TestCase $this->assertEquals($expected_lastname, $user['last_name']); } - public function testFirstName() + public function testFirstName(): void { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'natalia'; @@ -24,7 +24,7 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testFirstNameDotLastName() + public function testFirstNameDotLastName(): void { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'natalia.allanovna-romanova-oshostakova'; @@ -32,7 +32,7 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testLastNameFirstInitial() + public function testLastNameFirstInitial(): void { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'allanovna-romanova-oshostakovan'; @@ -40,7 +40,7 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testFirstInitialLastName() + public function testFirstInitialLastName(): void { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'nallanovna-romanova-oshostakova'; @@ -48,7 +48,7 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testFirstInitialUnderscoreLastName() + public function testFirstInitialUnderscoreLastName(): void { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'nallanovna-romanova-oshostakova'; @@ -56,7 +56,7 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testSingleName() + public function testSingleName(): void { $fullname = 'Natalia'; $expected_username = 'natalia'; From 95516b0343aa5755a95b330fcf4c5c3ccefedc69 Mon Sep 17 00:00:00 2001 From: Shift Date: Tue, 6 Aug 2024 20:25:22 +0000 Subject: [PATCH 052/118] Define test classes as `final` --- tests/Feature/AssetModels/Api/CreateAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Api/IndexAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php | 2 +- tests/Feature/Assets/Api/AssetFilesTest.php | 2 +- tests/Feature/Assets/Api/AssetIndexTest.php | 2 +- tests/Feature/Assets/Api/AssetsForSelectListTest.php | 2 +- tests/Feature/Assets/Api/RequestableAssetTest.php | 2 +- tests/Feature/Assets/Api/StoreAssetTest.php | 2 +- tests/Feature/Assets/Api/UpdateAssetTest.php | 2 +- tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php | 2 +- tests/Feature/Assets/Ui/BulkEditAssetsTest.php | 2 +- tests/Feature/Assets/Ui/CloneAssetTest.php | 2 +- tests/Feature/Assets/Ui/EditAssetTest.php | 2 +- tests/Feature/Categories/Api/CreateCategoriesTest.php | 2 +- tests/Feature/Categories/Api/IndexCategoriesTest.php | 2 +- tests/Feature/Categories/Api/UpdateCategoriesTest.php | 2 +- tests/Feature/Categories/Ui/CreateCategoriesTest.php | 2 +- tests/Feature/Categories/Ui/IndexCategoriesTest.php | 2 +- tests/Feature/Categories/Ui/UpdateCategoriesTest.php | 2 +- tests/Feature/Checkins/Api/AssetCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/AccessoryCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/AssetCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/ComponentCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/LicenseCheckinTest.php | 2 +- .../Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php | 2 +- tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php | 2 +- tests/Feature/Checkouts/Api/AssetCheckoutTest.php | 2 +- tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/AssetCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php | 2 +- tests/Feature/Components/Api/ComponentIndexTest.php | 2 +- tests/Feature/Components/Ui/ComponentIndexTest.php | 2 +- tests/Feature/Console/MergeUsersTest.php | 2 +- tests/Feature/Console/OptimizeTest.php | 2 +- tests/Feature/Consumables/Api/ConsumableIndexTest.php | 2 +- tests/Feature/Consumables/Api/ConsumableUpdateTest.php | 2 +- tests/Feature/Consumables/Api/ConsumableViewTest.php | 2 +- tests/Feature/Consumables/Ui/ConsumableIndexTest.php | 2 +- tests/Feature/Consumables/Ui/ConsumableViewTest.php | 2 +- tests/Feature/DashboardTest.php | 2 +- tests/Feature/Departments/Api/CreateDepartmentsTest.php | 2 +- tests/Feature/Departments/Api/DepartmentsIndexTest.php | 2 +- tests/Feature/Departments/Api/UpdateDepartmentsTest.php | 2 +- tests/Feature/Departments/Ui/CreateDepartmentsTest.php | 2 +- tests/Feature/Departments/Ui/IndexDepartmentsTest.php | 2 +- tests/Feature/Departments/Ui/UpdateDepartmentsTest.php | 2 +- tests/Feature/Groups/Api/StoreGroupTest.php | 2 +- tests/Feature/Groups/Ui/IndexGroupTest.php | 2 +- tests/Feature/Licenses/Api/LicenseIndexTest.php | 2 +- tests/Feature/Licenses/Ui/CreateLicenseTest.php | 2 +- tests/Feature/Licenses/Ui/LicenseIndexTest.php | 2 +- tests/Feature/Licenses/Ui/LicenseViewTest.php | 2 +- tests/Feature/Livewire/CategoryEditFormTest.php | 2 +- tests/Feature/Locations/Api/CreateLocationsTest.php | 2 +- tests/Feature/Locations/Api/DeleteLocationsTest.php | 2 +- tests/Feature/Locations/Api/IndexLocationsTest.php | 2 +- tests/Feature/Locations/Api/LocationsForSelectListTest.php | 2 +- tests/Feature/Locations/Api/LocationsViewTest.php | 2 +- tests/Feature/Locations/Api/UpdateLocationsTest.php | 2 +- tests/Feature/Locations/Ui/CreateLocationsTest.php | 2 +- tests/Feature/Locations/Ui/IndexLocationsTest.php | 2 +- tests/Feature/Locations/Ui/UpdateLocationsTest.php | 2 +- .../Notifications/Email/EmailNotificationsUponCheckinTest.php | 2 +- .../Webhooks/SlackNotificationsUponCheckinTest.php | 2 +- .../Webhooks/SlackNotificationsUponCheckoutTest.php | 2 +- tests/Feature/Reporting/CustomReportTest.php | 2 +- tests/Feature/Reporting/UnacceptedAssetReportTest.php | 2 +- tests/Feature/Settings/BrandingSettingsTest.php | 2 +- tests/Feature/Settings/ShowSetUpPageTest.php | 2 +- tests/Feature/Users/Api/DeleteUserTest.php | 2 +- tests/Feature/Users/Api/RestoreUserTest.php | 2 +- tests/Feature/Users/Api/UpdateUserTest.php | 2 +- tests/Feature/Users/Api/UserSearchTest.php | 2 +- tests/Feature/Users/Api/UsersForSelectListTest.php | 2 +- tests/Feature/Users/Api/ViewUserTest.php | 2 +- tests/Feature/Users/Ui/DeleteUserTest.php | 2 +- tests/Feature/Users/Ui/MergeUsersTest.php | 2 +- tests/Feature/Users/Ui/UpdateUserTest.php | 2 +- tests/Feature/Users/Ui/ViewUserTest.php | 2 +- tests/Unit/AccessoryTest.php | 2 +- tests/Unit/AssetMaintenanceTest.php | 2 +- tests/Unit/AssetModelTest.php | 2 +- tests/Unit/AssetTest.php | 2 +- tests/Unit/CategoryTest.php | 2 +- tests/Unit/CompanyScopingTest.php | 2 +- tests/Unit/ComponentTest.php | 2 +- tests/Unit/CustomFieldTest.php | 2 +- tests/Unit/DepreciationTest.php | 2 +- tests/Unit/Helpers/HelperTest.php | 2 +- tests/Unit/LdapTest.php | 2 +- tests/Unit/Listeners/LogListenerTest.php | 2 +- tests/Unit/LocationTest.php | 2 +- tests/Unit/Models/Company/CompanyTest.php | 2 +- tests/Unit/Models/Company/GetIdForCurrentUserTest.php | 2 +- tests/Unit/Models/Labels/FieldOptionTest.php | 2 +- tests/Unit/NotificationTest.php | 2 +- tests/Unit/SnipeModelTest.php | 2 +- tests/Unit/SnipeTranslatorTest.php | 2 +- tests/Unit/StatuslabelTest.php | 2 +- tests/Unit/UserTest.php | 2 +- 106 files changed, 106 insertions(+), 106 deletions(-) diff --git a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php index 9dd0400f6..7325c240b 100644 --- a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class CreateAssetModelsTest extends TestCase +final class CreateAssetModelsTest extends TestCase { diff --git a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php index 4a672965d..7f83c97c2 100644 --- a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class IndexAssetModelsTest extends TestCase +final class IndexAssetModelsTest extends TestCase { public function testViewingAssetModelIndexRequiresAuthentication(): void { diff --git a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php index ab42dbdd6..c9cc7b654 100644 --- a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class UpdateAssetModelsTest extends TestCase +final class UpdateAssetModelsTest extends TestCase { public function testRequiresPermissionToEditAssetModel(): void diff --git a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php index a959b66c9..c2d51b397 100644 --- a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class CreateAssetModelsTest extends TestCase +final class CreateAssetModelsTest extends TestCase { public function testPermissionRequiredToCreateAssetModel(): void { diff --git a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php index 4e4d6e66c..69724a4a6 100644 --- a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\AssetModels\Ui; use App\Models\User; use Tests\TestCase; -class IndexAssetModelsTest extends TestCase +final class IndexAssetModelsTest extends TestCase { public function testPermissionRequiredToViewAssetModelList(): void { diff --git a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php index f3eef58ef..33336fa38 100644 --- a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class UpdateAssetModelsTest extends TestCase +final class UpdateAssetModelsTest extends TestCase { public function testPermissionRequiredToStoreAssetModel(): void { diff --git a/tests/Feature/Assets/Api/AssetFilesTest.php b/tests/Feature/Assets/Api/AssetFilesTest.php index 6f5173913..ad30f9629 100644 --- a/tests/Feature/Assets/Api/AssetFilesTest.php +++ b/tests/Feature/Assets/Api/AssetFilesTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Illuminate\Http\UploadedFile; use Tests\TestCase; -class AssetFilesTest extends TestCase +final class AssetFilesTest extends TestCase { public function testAssetApiAcceptsFileUpload(): void { diff --git a/tests/Feature/Assets/Api/AssetIndexTest.php b/tests/Feature/Assets/Api/AssetIndexTest.php index 4d40ba954..0fd81862a 100644 --- a/tests/Feature/Assets/Api/AssetIndexTest.php +++ b/tests/Feature/Assets/Api/AssetIndexTest.php @@ -9,7 +9,7 @@ use Carbon\Carbon; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class AssetIndexTest extends TestCase +final class AssetIndexTest extends TestCase { public function testAssetApiIndexReturnsExpectedAssets(): void { diff --git a/tests/Feature/Assets/Api/AssetsForSelectListTest.php b/tests/Feature/Assets/Api/AssetsForSelectListTest.php index 603fab617..b7837f758 100644 --- a/tests/Feature/Assets/Api/AssetsForSelectListTest.php +++ b/tests/Feature/Assets/Api/AssetsForSelectListTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -class AssetsForSelectListTest extends TestCase +final class AssetsForSelectListTest extends TestCase { public function testAssetsCanBeSearchedForByAssetTag(): void { diff --git a/tests/Feature/Assets/Api/RequestableAssetTest.php b/tests/Feature/Assets/Api/RequestableAssetTest.php index 28b916380..10188e84e 100644 --- a/tests/Feature/Assets/Api/RequestableAssetTest.php +++ b/tests/Feature/Assets/Api/RequestableAssetTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -class RequestableAssetTest extends TestCase +final class RequestableAssetTest extends TestCase { public function testViewingRequestableAssetsRequiresCorrectPermission(): void { diff --git a/tests/Feature/Assets/Api/StoreAssetTest.php b/tests/Feature/Assets/Api/StoreAssetTest.php index 5eba2d94b..320455aa4 100644 --- a/tests/Feature/Assets/Api/StoreAssetTest.php +++ b/tests/Feature/Assets/Api/StoreAssetTest.php @@ -14,7 +14,7 @@ use Illuminate\Support\Facades\Crypt; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class StoreAssetTest extends TestCase +final class StoreAssetTest extends TestCase { public function testRequiresPermissionToCreateAsset(): void { diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index 65b89ede2..f964ea1ae 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -13,7 +13,7 @@ use App\Models\CustomField; use Illuminate\Support\Facades\Crypt; use Tests\TestCase; -class UpdateAssetTest extends TestCase +final class UpdateAssetTest extends TestCase { public function testThatANonExistentAssetIdReturnsError(): void { diff --git a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php index 1470341fb..3be29e2d5 100644 --- a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php @@ -8,7 +8,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -class BulkDeleteAssetsTest extends TestCase +final class BulkDeleteAssetsTest extends TestCase { public function testUserWithPermissionsCanAccessPage(): void { diff --git a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php index ffc23cf58..359685297 100644 --- a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php @@ -12,7 +12,7 @@ use App\Models\User; use Illuminate\Support\Facades\Crypt; use Tests\TestCase; -class BulkEditAssetsTest extends TestCase +final class BulkEditAssetsTest extends TestCase { public function testUserWithPermissionsCanAccessPage(): void { diff --git a/tests/Feature/Assets/Ui/CloneAssetTest.php b/tests/Feature/Assets/Ui/CloneAssetTest.php index 819f5cd16..ebf7cd657 100644 --- a/tests/Feature/Assets/Ui/CloneAssetTest.php +++ b/tests/Feature/Assets/Ui/CloneAssetTest.php @@ -6,7 +6,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -class CloneAssetTest extends TestCase +final class CloneAssetTest extends TestCase { public function testPermissionRequiredToCreateAssetModel(): void { diff --git a/tests/Feature/Assets/Ui/EditAssetTest.php b/tests/Feature/Assets/Ui/EditAssetTest.php index 2c75649d3..6561df472 100644 --- a/tests/Feature/Assets/Ui/EditAssetTest.php +++ b/tests/Feature/Assets/Ui/EditAssetTest.php @@ -8,7 +8,7 @@ use App\Models\StatusLabel; use App\Models\User; use Tests\TestCase; -class EditAssetTest extends TestCase +final class EditAssetTest extends TestCase { public function testPermissionRequiredToViewLicense(): void diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php index 8d2d6d35b..f5c0d6ac6 100644 --- a/tests/Feature/Categories/Api/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -9,7 +9,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class CreateCategoriesTest extends TestCase +final class CreateCategoriesTest extends TestCase { diff --git a/tests/Feature/Categories/Api/IndexCategoriesTest.php b/tests/Feature/Categories/Api/IndexCategoriesTest.php index 04cbb516b..a763dbbec 100644 --- a/tests/Feature/Categories/Api/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Api/IndexCategoriesTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class IndexCategoriesTest extends TestCase +final class IndexCategoriesTest extends TestCase { public function testViewingCategoryIndexRequiresPermission(): void diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php index ebfdb862d..6b3bd76ad 100644 --- a/tests/Feature/Categories/Api/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -6,7 +6,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class UpdateCategoriesTest extends TestCase +final class UpdateCategoriesTest extends TestCase { public function testCanUpdateCategoryViaPatchWithoutCategoryType(): void diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php index 358d3564c..5deffbe20 100644 --- a/tests/Feature/Categories/Ui/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class CreateCategoriesTest extends TestCase +final class CreateCategoriesTest extends TestCase { public function testPermissionRequiredToCreateCategories(): void { diff --git a/tests/Feature/Categories/Ui/IndexCategoriesTest.php b/tests/Feature/Categories/Ui/IndexCategoriesTest.php index 231377f7c..571e401b8 100644 --- a/tests/Feature/Categories/Ui/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Ui/IndexCategoriesTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Categories\Ui; use App\Models\User; use Tests\TestCase; -class IndexCategoriesTest extends TestCase +final class IndexCategoriesTest extends TestCase { public function testPermissionRequiredToViewCategoryList(): void { diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php index abe2f3092..45e02a0a6 100644 --- a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -7,7 +7,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -class UpdateCategoriesTest extends TestCase +final class UpdateCategoriesTest extends TestCase { public function testPermissionRequiredToStoreCategory(): void { diff --git a/tests/Feature/Checkins/Api/AssetCheckinTest.php b/tests/Feature/Checkins/Api/AssetCheckinTest.php index d3b068e5b..1891a9d28 100644 --- a/tests/Feature/Checkins/Api/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Api/AssetCheckinTest.php @@ -13,7 +13,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -class AssetCheckinTest extends TestCase +final class AssetCheckinTest extends TestCase { public function testCheckingInAssetRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php index 4e078a1b4..0eb63b478 100644 --- a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php @@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class AccessoryCheckinTest extends TestCase +final class AccessoryCheckinTest extends TestCase { public function testCheckingInAccessoryRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkins/Ui/AssetCheckinTest.php b/tests/Feature/Checkins/Ui/AssetCheckinTest.php index a03a4c931..fde107129 100644 --- a/tests/Feature/Checkins/Ui/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AssetCheckinTest.php @@ -13,7 +13,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -class AssetCheckinTest extends TestCase +final class AssetCheckinTest extends TestCase { public function testCheckingInAssetRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php index 0da1282a4..a665d13ff 100644 --- a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php +++ b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php @@ -6,7 +6,7 @@ use App\Models\Component; use App\Models\User; use Tests\TestCase; -class ComponentCheckinTest extends TestCase +final class ComponentCheckinTest extends TestCase { public function testCheckingInComponentRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php index 550f26ad4..248663860 100644 --- a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php +++ b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php @@ -6,7 +6,7 @@ use App\Models\LicenseSeat; use App\Models\User; use Tests\TestCase; -class LicenseCheckinTest extends TestCase +final class LicenseCheckinTest extends TestCase { public function testCheckingInLicenseRequiresCorrectPermission(): void { diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index 13e366454..de7c0af6c 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -11,7 +11,7 @@ use App\Notifications\AcceptanceAssetDeclinedNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class AccessoryAcceptanceTest extends TestCase +final class AccessoryAcceptanceTest extends TestCase { /** * This can be absorbed into a bigger test diff --git a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php index 1b1b1c16b..45c119de8 100644 --- a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php @@ -9,7 +9,7 @@ use App\Notifications\CheckoutAccessoryNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class AccessoryCheckoutTest extends TestCase +final class AccessoryCheckoutTest extends TestCase { public function testCheckingOutAccessoryRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php index b66ee2d02..3ea610d01 100644 --- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php @@ -12,7 +12,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -class AssetCheckoutTest extends TestCase +final class AssetCheckoutTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php index 8a060572e..398f61823 100644 --- a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php @@ -9,7 +9,7 @@ use App\Notifications\CheckoutConsumableNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class ConsumableCheckoutTest extends TestCase +final class ConsumableCheckoutTest extends TestCase { public function testCheckingOutConsumableRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php index cefd84388..47e057fdf 100644 --- a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php @@ -11,7 +11,7 @@ use App\Notifications\CheckoutAccessoryNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class AccessoryCheckoutTest extends TestCase +final class AccessoryCheckoutTest extends TestCase { public function testCheckingOutAccessoryRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php index bb191d1ac..64ddd30cf 100644 --- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php @@ -15,7 +15,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -class AssetCheckoutTest extends TestCase +final class AssetCheckoutTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php index f0d82dbf0..5f8e8d6f3 100644 --- a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php @@ -7,7 +7,7 @@ use App\Models\Component; use App\Models\User; use Tests\TestCase; -class ComponentsCheckoutTest extends TestCase +final class ComponentsCheckoutTest extends TestCase { public function testCheckingOutComponentRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php index b27be6d48..e08d101a0 100644 --- a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php @@ -11,7 +11,7 @@ use App\Notifications\CheckoutConsumableNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class ConsumableCheckoutTest extends TestCase +final class ConsumableCheckoutTest extends TestCase { public function testCheckingOutConsumableRequiresCorrectPermission(): void { diff --git a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php index 49f0ddae8..6d8cb649a 100644 --- a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php @@ -8,7 +8,7 @@ use App\Models\LicenseSeat; use App\Models\User; use Tests\TestCase; -class LicenseCheckoutTest extends TestCase +final class LicenseCheckoutTest extends TestCase { public function testNotesAreStoredInActionLogOnCheckoutToAsset(): void { diff --git a/tests/Feature/Components/Api/ComponentIndexTest.php b/tests/Feature/Components/Api/ComponentIndexTest.php index 300f0ec8f..df1e91544 100644 --- a/tests/Feature/Components/Api/ComponentIndexTest.php +++ b/tests/Feature/Components/Api/ComponentIndexTest.php @@ -7,7 +7,7 @@ use App\Models\Component; use App\Models\User; use Tests\TestCase; -class ComponentIndexTest extends TestCase +final class ComponentIndexTest extends TestCase { public function testComponentIndexAdheresToCompanyScoping(): void { diff --git a/tests/Feature/Components/Ui/ComponentIndexTest.php b/tests/Feature/Components/Ui/ComponentIndexTest.php index 1d8e2416c..c0e8422fb 100644 --- a/tests/Feature/Components/Ui/ComponentIndexTest.php +++ b/tests/Feature/Components/Ui/ComponentIndexTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Components\Ui; use App\Models\User; use Tests\TestCase; -class ComponentIndexTest extends TestCase +final class ComponentIndexTest extends TestCase { public function testPermissionRequiredToViewComponentsList(): void { diff --git a/tests/Feature/Console/MergeUsersTest.php b/tests/Feature/Console/MergeUsersTest.php index cbcc7007c..e775e1c4a 100644 --- a/tests/Feature/Console/MergeUsersTest.php +++ b/tests/Feature/Console/MergeUsersTest.php @@ -11,7 +11,7 @@ use App\Models\Actionlog; use Tests\TestCase; -class MergeUsersTest extends TestCase +final class MergeUsersTest extends TestCase { public function testAssetsAreTransferredOnUserMerge(): void { diff --git a/tests/Feature/Console/OptimizeTest.php b/tests/Feature/Console/OptimizeTest.php index 6a3926e30..a6648c363 100644 --- a/tests/Feature/Console/OptimizeTest.php +++ b/tests/Feature/Console/OptimizeTest.php @@ -4,7 +4,7 @@ namespace Tests\Feature\Console; use Tests\TestCase; -class OptimizeTest extends TestCase +final class OptimizeTest extends TestCase { public function testOptimizeSucceeds(): void { diff --git a/tests/Feature/Consumables/Api/ConsumableIndexTest.php b/tests/Feature/Consumables/Api/ConsumableIndexTest.php index 93ea6f54b..d4d4ca9ff 100644 --- a/tests/Feature/Consumables/Api/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Api/ConsumableIndexTest.php @@ -7,7 +7,7 @@ use App\Models\Consumable; use App\Models\User; use Tests\TestCase; -class ConsumableIndexTest extends TestCase +final class ConsumableIndexTest extends TestCase { public function testConsumableIndexAdheresToCompanyScoping(): void { diff --git a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php index 844c11d2c..c622b820c 100644 --- a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php +++ b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class ConsumableUpdateTest extends TestCase +final class ConsumableUpdateTest extends TestCase { public function testCanUpdateConsumableViaPatchWithoutCategoryType(): void diff --git a/tests/Feature/Consumables/Api/ConsumableViewTest.php b/tests/Feature/Consumables/Api/ConsumableViewTest.php index d9218222a..52bd4e31b 100644 --- a/tests/Feature/Consumables/Api/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Api/ConsumableViewTest.php @@ -7,7 +7,7 @@ use App\Models\Consumable; use App\Models\User; use Tests\TestCase; -class ConsumableViewTest extends TestCase +final class ConsumableViewTest extends TestCase { public function testConsumableViewAdheresToCompanyScoping(): void { diff --git a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php index 16797c4ec..a14d551d2 100644 --- a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Consumables\Ui; use App\Models\User; use Tests\TestCase; -class ConsumableIndexTest extends TestCase +final class ConsumableIndexTest extends TestCase { public function testPermissionRequiredToViewConsumablesList(): void { diff --git a/tests/Feature/Consumables/Ui/ConsumableViewTest.php b/tests/Feature/Consumables/Ui/ConsumableViewTest.php index 394be170d..7e5371207 100644 --- a/tests/Feature/Consumables/Ui/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableViewTest.php @@ -6,7 +6,7 @@ use App\Models\Consumable; use App\Models\User; use Tests\TestCase; -class ConsumableViewTest extends TestCase +final class ConsumableViewTest extends TestCase { public function testPermissionRequiredToViewConsumable(): void { diff --git a/tests/Feature/DashboardTest.php b/tests/Feature/DashboardTest.php index 6857ace7d..c8452763b 100644 --- a/tests/Feature/DashboardTest.php +++ b/tests/Feature/DashboardTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature; use App\Models\User; use Tests\TestCase; -class DashboardTest extends TestCase +final class DashboardTest extends TestCase { public function testUsersWithoutAdminAccessAreRedirected(): void { diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php index bda471196..5796fd92f 100644 --- a/tests/Feature/Departments/Api/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -9,7 +9,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class CreateDepartmentsTest extends TestCase +final class CreateDepartmentsTest extends TestCase { diff --git a/tests/Feature/Departments/Api/DepartmentsIndexTest.php b/tests/Feature/Departments/Api/DepartmentsIndexTest.php index 783719902..eff7f98a1 100644 --- a/tests/Feature/Departments/Api/DepartmentsIndexTest.php +++ b/tests/Feature/Departments/Api/DepartmentsIndexTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class DepartmentsIndexTest extends TestCase +final class DepartmentsIndexTest extends TestCase { public function testViewingDepartmentIndexRequiresAuthentication(): void { diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php index 654408755..5e884e6fb 100644 --- a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class UpdateDepartmentsTest extends TestCase +final class UpdateDepartmentsTest extends TestCase { public function testRequiresPermissionToEditDepartment(): void diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php index ea4fdb674..ef46fd13a 100644 --- a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -class CreateDepartmentsTest extends TestCase +final class CreateDepartmentsTest extends TestCase { public function testPermissionRequiredToCreateDepartment(): void { diff --git a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php index e35511b1f..b642124ab 100644 --- a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Departments\Ui; use App\Models\User; use Tests\TestCase; -class IndexDepartmentsTest extends TestCase +final class IndexDepartmentsTest extends TestCase { public function testPermissionRequiredToViewDepartmentsList(): void { diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php index 919835e0a..a3864e4f2 100644 --- a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -class UpdateDepartmentsTest extends TestCase +final class UpdateDepartmentsTest extends TestCase { public function testPermissionRequiredToStoreDepartment(): void { diff --git a/tests/Feature/Groups/Api/StoreGroupTest.php b/tests/Feature/Groups/Api/StoreGroupTest.php index 7619c5df6..df8f42ddf 100644 --- a/tests/Feature/Groups/Api/StoreGroupTest.php +++ b/tests/Feature/Groups/Api/StoreGroupTest.php @@ -7,7 +7,7 @@ use App\Models\Group; use App\Models\User; use Tests\TestCase; -class StoreGroupTest extends TestCase +final class StoreGroupTest extends TestCase { public function testStoringGroupRequiresSuperAdminPermission(): void { diff --git a/tests/Feature/Groups/Ui/IndexGroupTest.php b/tests/Feature/Groups/Ui/IndexGroupTest.php index 29ba058d1..a39766e25 100644 --- a/tests/Feature/Groups/Ui/IndexGroupTest.php +++ b/tests/Feature/Groups/Ui/IndexGroupTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Groups\Ui; use App\Models\User; use Tests\TestCase; -class IndexGroupTest extends TestCase +final class IndexGroupTest extends TestCase { public function testPermissionRequiredToViewGroupList(): void { diff --git a/tests/Feature/Licenses/Api/LicenseIndexTest.php b/tests/Feature/Licenses/Api/LicenseIndexTest.php index 621489f8e..11d81b06f 100644 --- a/tests/Feature/Licenses/Api/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Api/LicenseIndexTest.php @@ -7,7 +7,7 @@ use App\Models\License; use App\Models\User; use Tests\TestCase; -class LicenseIndexTest extends TestCase +final class LicenseIndexTest extends TestCase { public function testLicensesIndexAdheresToCompanyScoping(): void { diff --git a/tests/Feature/Licenses/Ui/CreateLicenseTest.php b/tests/Feature/Licenses/Ui/CreateLicenseTest.php index c07818f01..c302bbf61 100644 --- a/tests/Feature/Licenses/Ui/CreateLicenseTest.php +++ b/tests/Feature/Licenses/Ui/CreateLicenseTest.php @@ -9,7 +9,7 @@ use App\Models\Depreciation; use App\Models\User; use Tests\TestCase; -class CreateLicenseTest extends TestCase +final class CreateLicenseTest extends TestCase { public function testPermissionRequiredToViewLicense(): void { diff --git a/tests/Feature/Licenses/Ui/LicenseIndexTest.php b/tests/Feature/Licenses/Ui/LicenseIndexTest.php index a370b8e86..381fe9098 100644 --- a/tests/Feature/Licenses/Ui/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Ui/LicenseIndexTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Licenses\Ui; use App\Models\User; use Tests\TestCase; -class LicenseIndexTest extends TestCase +final class LicenseIndexTest extends TestCase { public function testPermissionRequiredToViewLicenseList(): void { diff --git a/tests/Feature/Licenses/Ui/LicenseViewTest.php b/tests/Feature/Licenses/Ui/LicenseViewTest.php index d0dd215ee..1685e58bf 100644 --- a/tests/Feature/Licenses/Ui/LicenseViewTest.php +++ b/tests/Feature/Licenses/Ui/LicenseViewTest.php @@ -7,7 +7,7 @@ use App\Models\Depreciation; use App\Models\User; use Tests\TestCase; -class LicenseViewTest extends TestCase +final class LicenseViewTest extends TestCase { public function testPermissionRequiredToViewLicense(): void { diff --git a/tests/Feature/Livewire/CategoryEditFormTest.php b/tests/Feature/Livewire/CategoryEditFormTest.php index 8f0948051..3e75781d1 100644 --- a/tests/Feature/Livewire/CategoryEditFormTest.php +++ b/tests/Feature/Livewire/CategoryEditFormTest.php @@ -6,7 +6,7 @@ use App\Livewire\CategoryEditForm; use Livewire\Livewire; use Tests\TestCase; -class CategoryEditFormTest extends TestCase +final class CategoryEditFormTest extends TestCase { public function testTheComponentCanRender(): void { diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php index 6903c8dad..b114266d4 100644 --- a/tests/Feature/Locations/Api/CreateLocationsTest.php +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -6,7 +6,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -class CreateLocationsTest extends TestCase +final class CreateLocationsTest extends TestCase { public function testRequiresPermissionToCreateLocation(): void diff --git a/tests/Feature/Locations/Api/DeleteLocationsTest.php b/tests/Feature/Locations/Api/DeleteLocationsTest.php index 4041aa121..111fdb1ca 100644 --- a/tests/Feature/Locations/Api/DeleteLocationsTest.php +++ b/tests/Feature/Locations/Api/DeleteLocationsTest.php @@ -7,7 +7,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -class DeleteLocationsTest extends TestCase +final class DeleteLocationsTest extends TestCase { public function testErrorReturnedViaApiIfLocationDoesNotExist(): void diff --git a/tests/Feature/Locations/Api/IndexLocationsTest.php b/tests/Feature/Locations/Api/IndexLocationsTest.php index d9dec89c8..6a1a7474c 100644 --- a/tests/Feature/Locations/Api/IndexLocationsTest.php +++ b/tests/Feature/Locations/Api/IndexLocationsTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class IndexLocationsTest extends TestCase +final class IndexLocationsTest extends TestCase { public function testViewingLocationIndexRequiresAuthentication(): void { diff --git a/tests/Feature/Locations/Api/LocationsForSelectListTest.php b/tests/Feature/Locations/Api/LocationsForSelectListTest.php index d9e0c7a88..563135ddd 100644 --- a/tests/Feature/Locations/Api/LocationsForSelectListTest.php +++ b/tests/Feature/Locations/Api/LocationsForSelectListTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -class LocationsForSelectListTest extends TestCase +final class LocationsForSelectListTest extends TestCase { public function testGettingLocationListRequiresProperPermission(): void { diff --git a/tests/Feature/Locations/Api/LocationsViewTest.php b/tests/Feature/Locations/Api/LocationsViewTest.php index 15a320ed8..270db594e 100644 --- a/tests/Feature/Locations/Api/LocationsViewTest.php +++ b/tests/Feature/Locations/Api/LocationsViewTest.php @@ -7,7 +7,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -class LocationsViewTest extends TestCase +final class LocationsViewTest extends TestCase { public function testViewingLocationRequiresPermission(): void { diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php index ce9bd570c..6cc52cfc6 100644 --- a/tests/Feature/Locations/Api/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -6,7 +6,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -class UpdateLocationsTest extends TestCase +final class UpdateLocationsTest extends TestCase { public function testRequiresPermissionToEditLocation(): void diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php index 4eb3a0d75..0994e69e0 100644 --- a/tests/Feature/Locations/Ui/CreateLocationsTest.php +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -class CreateLocationsTest extends TestCase +final class CreateLocationsTest extends TestCase { public function testPermissionRequiredToCreateLocation(): void { diff --git a/tests/Feature/Locations/Ui/IndexLocationsTest.php b/tests/Feature/Locations/Ui/IndexLocationsTest.php index 28aaeec6f..cc74cfd91 100644 --- a/tests/Feature/Locations/Ui/IndexLocationsTest.php +++ b/tests/Feature/Locations/Ui/IndexLocationsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Locations\Ui; use App\Models\User; use Tests\TestCase; -class IndexLocationsTest extends TestCase +final class IndexLocationsTest extends TestCase { public function testPermissionRequiredToViewLocationsList(): void { diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php index 02fbb4813..a93a679b7 100644 --- a/tests/Feature/Locations/Ui/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -6,7 +6,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -class UpdateLocationsTest extends TestCase +final class UpdateLocationsTest extends TestCase { public function testPermissionRequiredToStoreLocation(): void { diff --git a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php index 219cb528f..253305049 100644 --- a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php @@ -11,7 +11,7 @@ use Illuminate\Support\Facades\Notification; use Tests\TestCase; #[Group('notifications')] -class EmailNotificationsUponCheckinTest extends TestCase +final class EmailNotificationsUponCheckinTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php index b6f6964ab..b881dd9f1 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php @@ -19,7 +19,7 @@ use Illuminate\Support\Facades\Notification; use Tests\TestCase; #[Group('notifications')] -class SlackNotificationsUponCheckinTest extends TestCase +final class SlackNotificationsUponCheckinTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php index 39af3f6c5..dd9633a8a 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php @@ -21,7 +21,7 @@ use Illuminate\Support\Facades\Notification; use Tests\TestCase; #[Group('notifications')] -class SlackNotificationsUponCheckoutTest extends TestCase +final class SlackNotificationsUponCheckoutTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Reporting/CustomReportTest.php b/tests/Feature/Reporting/CustomReportTest.php index 015675016..ce2053c16 100644 --- a/tests/Feature/Reporting/CustomReportTest.php +++ b/tests/Feature/Reporting/CustomReportTest.php @@ -10,7 +10,7 @@ use League\Csv\Reader; use PHPUnit\Framework\Assert; use Tests\TestCase; -class CustomReportTest extends TestCase +final class CustomReportTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Reporting/UnacceptedAssetReportTest.php b/tests/Feature/Reporting/UnacceptedAssetReportTest.php index 8325661e2..c987e8276 100644 --- a/tests/Feature/Reporting/UnacceptedAssetReportTest.php +++ b/tests/Feature/Reporting/UnacceptedAssetReportTest.php @@ -10,7 +10,7 @@ use League\Csv\Reader; use PHPUnit\Framework\Assert; use Tests\TestCase; -class UnacceptedAssetReportTest extends TestCase +final class UnacceptedAssetReportTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Settings/BrandingSettingsTest.php b/tests/Feature/Settings/BrandingSettingsTest.php index cb8665f1c..4262b63e5 100644 --- a/tests/Feature/Settings/BrandingSettingsTest.php +++ b/tests/Feature/Settings/BrandingSettingsTest.php @@ -10,7 +10,7 @@ use App\Models\User; use App\Models\Setting; -class BrandingSettingsTest extends TestCase +final class BrandingSettingsTest extends TestCase { public function testSiteNameIsRequired(): void { diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php index 9fea64dd6..511b31fe4 100644 --- a/tests/Feature/Settings/ShowSetUpPageTest.php +++ b/tests/Feature/Settings/ShowSetUpPageTest.php @@ -19,7 +19,7 @@ use Illuminate\Testing\TestResponse; use PDOException; use Tests\TestCase; -class ShowSetUpPageTest extends TestCase +final class ShowSetUpPageTest extends TestCase { /** * We do not want to make actual http request on every test to check .env file diff --git a/tests/Feature/Users/Api/DeleteUserTest.php b/tests/Feature/Users/Api/DeleteUserTest.php index 2fab34d05..070a40092 100644 --- a/tests/Feature/Users/Api/DeleteUserTest.php +++ b/tests/Feature/Users/Api/DeleteUserTest.php @@ -8,7 +8,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -class DeleteUserTest extends TestCase +final class DeleteUserTest extends TestCase { diff --git a/tests/Feature/Users/Api/RestoreUserTest.php b/tests/Feature/Users/Api/RestoreUserTest.php index 9ec087a87..11c5e33d0 100644 --- a/tests/Feature/Users/Api/RestoreUserTest.php +++ b/tests/Feature/Users/Api/RestoreUserTest.php @@ -8,7 +8,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -class RestoreUserTest extends TestCase +final class RestoreUserTest extends TestCase { diff --git a/tests/Feature/Users/Api/UpdateUserTest.php b/tests/Feature/Users/Api/UpdateUserTest.php index 4f64998a6..de6cf116a 100644 --- a/tests/Feature/Users/Api/UpdateUserTest.php +++ b/tests/Feature/Users/Api/UpdateUserTest.php @@ -10,7 +10,7 @@ use App\Models\User; use Illuminate\Support\Facades\Hash; use Tests\TestCase; -class UpdateUserTest extends TestCase +final class UpdateUserTest extends TestCase { public function testCanUpdateUserViaPatch(): void { diff --git a/tests/Feature/Users/Api/UserSearchTest.php b/tests/Feature/Users/Api/UserSearchTest.php index 351fd1267..5dea41aa6 100644 --- a/tests/Feature/Users/Api/UserSearchTest.php +++ b/tests/Feature/Users/Api/UserSearchTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Laravel\Passport\Passport; use Tests\TestCase; -class UserSearchTest extends TestCase +final class UserSearchTest extends TestCase { public function testCanSearchByUserFirstAndLastName(): void { diff --git a/tests/Feature/Users/Api/UsersForSelectListTest.php b/tests/Feature/Users/Api/UsersForSelectListTest.php index c79650f60..2921bc418 100644 --- a/tests/Feature/Users/Api/UsersForSelectListTest.php +++ b/tests/Feature/Users/Api/UsersForSelectListTest.php @@ -8,7 +8,7 @@ use Illuminate\Testing\Fluent\AssertableJson; use Laravel\Passport\Passport; use Tests\TestCase; -class UsersForSelectListTest extends TestCase +final class UsersForSelectListTest extends TestCase { public function testUsersAreReturned(): void { diff --git a/tests/Feature/Users/Api/ViewUserTest.php b/tests/Feature/Users/Api/ViewUserTest.php index e0ce78c11..738907e5a 100644 --- a/tests/Feature/Users/Api/ViewUserTest.php +++ b/tests/Feature/Users/Api/ViewUserTest.php @@ -8,7 +8,7 @@ use Illuminate\Testing\Fluent\AssertableJson; use Laravel\Passport\Passport; use Tests\TestCase; -class ViewUserTest extends TestCase +final class ViewUserTest extends TestCase { public function testCanReturnUser(): void diff --git a/tests/Feature/Users/Ui/DeleteUserTest.php b/tests/Feature/Users/Ui/DeleteUserTest.php index e0defe742..6dd5d84f7 100644 --- a/tests/Feature/Users/Ui/DeleteUserTest.php +++ b/tests/Feature/Users/Ui/DeleteUserTest.php @@ -11,7 +11,7 @@ use App\Models\Company; use App\Models\Asset; -class DeleteUserTest extends TestCase +final class DeleteUserTest extends TestCase { public function testUserCanDeleteAnotherUser(): void diff --git a/tests/Feature/Users/Ui/MergeUsersTest.php b/tests/Feature/Users/Ui/MergeUsersTest.php index c8bab343e..7877e94fb 100644 --- a/tests/Feature/Users/Ui/MergeUsersTest.php +++ b/tests/Feature/Users/Ui/MergeUsersTest.php @@ -11,7 +11,7 @@ use App\Models\Actionlog; use Tests\TestCase; -class MergeUsersTest extends TestCase +final class MergeUsersTest extends TestCase { public function testAssetsAreTransferredOnUserMerge(): void { diff --git a/tests/Feature/Users/Ui/UpdateUserTest.php b/tests/Feature/Users/Ui/UpdateUserTest.php index 16caa7e6a..9d8cc04df 100644 --- a/tests/Feature/Users/Ui/UpdateUserTest.php +++ b/tests/Feature/Users/Ui/UpdateUserTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Users\Ui; use App\Models\User; use Tests\TestCase; -class UpdateUserTest extends TestCase +final class UpdateUserTest extends TestCase { public function testUsersCanBeActivatedWithNumber(): void { diff --git a/tests/Feature/Users/Ui/ViewUserTest.php b/tests/Feature/Users/Ui/ViewUserTest.php index 5cd705104..111e950f2 100644 --- a/tests/Feature/Users/Ui/ViewUserTest.php +++ b/tests/Feature/Users/Ui/ViewUserTest.php @@ -8,7 +8,7 @@ use App\Notifications\CurrentInventory; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class ViewUserTest extends TestCase +final class ViewUserTest extends TestCase { public function testPermissionsForUserDetailPage(): void { diff --git a/tests/Unit/AccessoryTest.php b/tests/Unit/AccessoryTest.php index af05be10f..98021c509 100644 --- a/tests/Unit/AccessoryTest.php +++ b/tests/Unit/AccessoryTest.php @@ -8,7 +8,7 @@ use App\Models\Category; use App\Models\Company; use Tests\TestCase; -class AccessoryTest extends TestCase +final class AccessoryTest extends TestCase { public function testAnAccessoryBelongsToACompany(): void { diff --git a/tests/Unit/AssetMaintenanceTest.php b/tests/Unit/AssetMaintenanceTest.php index b317de993..f033ba9b8 100644 --- a/tests/Unit/AssetMaintenanceTest.php +++ b/tests/Unit/AssetMaintenanceTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\AssetMaintenance; use Tests\TestCase; -class AssetMaintenanceTest extends TestCase +final class AssetMaintenanceTest extends TestCase { public function testZerosOutWarrantyIfBlank(): void { diff --git a/tests/Unit/AssetModelTest.php b/tests/Unit/AssetModelTest.php index 961560b5a..9e4f8920f 100644 --- a/tests/Unit/AssetModelTest.php +++ b/tests/Unit/AssetModelTest.php @@ -6,7 +6,7 @@ use App\Models\Category; use App\Models\AssetModel; use Tests\TestCase; -class AssetModelTest extends TestCase +final class AssetModelTest extends TestCase { public function testAnAssetModelContainsAssets(): void { diff --git a/tests/Unit/AssetTest.php b/tests/Unit/AssetTest.php index 619e34cc8..34b187660 100644 --- a/tests/Unit/AssetTest.php +++ b/tests/Unit/AssetTest.php @@ -8,7 +8,7 @@ use Carbon\Carbon; use Tests\TestCase; use App\Models\Setting; -class AssetTest extends TestCase +final class AssetTest extends TestCase { public function testAutoIncrement(): void { diff --git a/tests/Unit/CategoryTest.php b/tests/Unit/CategoryTest.php index 1a7bfd1ba..8e1fe83f8 100644 --- a/tests/Unit/CategoryTest.php +++ b/tests/Unit/CategoryTest.php @@ -6,7 +6,7 @@ use App\Models\AssetModel; use App\Models\Asset; use Tests\TestCase; -class CategoryTest extends TestCase +final class CategoryTest extends TestCase { public function testFailsEmptyValidation(): void { diff --git a/tests/Unit/CompanyScopingTest.php b/tests/Unit/CompanyScopingTest.php index 084c223e6..a86a767dd 100644 --- a/tests/Unit/CompanyScopingTest.php +++ b/tests/Unit/CompanyScopingTest.php @@ -15,7 +15,7 @@ use App\Models\User; use Illuminate\Database\Eloquent\Model; use Tests\TestCase; -class CompanyScopingTest extends TestCase +final class CompanyScopingTest extends TestCase { public static function models(): array { diff --git a/tests/Unit/ComponentTest.php b/tests/Unit/ComponentTest.php index f3f0f50eb..8d411bc7d 100644 --- a/tests/Unit/ComponentTest.php +++ b/tests/Unit/ComponentTest.php @@ -7,7 +7,7 @@ use App\Models\Component; use App\Models\Location; use Tests\TestCase; -class ComponentTest extends TestCase +final class ComponentTest extends TestCase { public function testAComponentBelongsToACompany(): void { diff --git a/tests/Unit/CustomFieldTest.php b/tests/Unit/CustomFieldTest.php index fe2c1e88b..34b8f6575 100644 --- a/tests/Unit/CustomFieldTest.php +++ b/tests/Unit/CustomFieldTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; * Test strings for db column names gathered from * http://www.omniglot.com/language/phrases/hovercraft.htm */ -class CustomFieldTest extends TestCase +final class CustomFieldTest extends TestCase { public function testFormat(): void { diff --git a/tests/Unit/DepreciationTest.php b/tests/Unit/DepreciationTest.php index 8cd51b3e2..566c29fe1 100644 --- a/tests/Unit/DepreciationTest.php +++ b/tests/Unit/DepreciationTest.php @@ -7,7 +7,7 @@ use App\Models\License; use App\Models\AssetModel; use Tests\TestCase; -class DepreciationTest extends TestCase +final class DepreciationTest extends TestCase { public function testADepreciationHasModels(): void { diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index 83dddbc6a..82a71fd91 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -8,7 +8,7 @@ use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Session; use Tests\TestCase; -class HelperTest extends TestCase +final class HelperTest extends TestCase { public function testDefaultChartColorsMethodHandlesHighValues(): void { diff --git a/tests/Unit/LdapTest.php b/tests/Unit/LdapTest.php index 596f4d5fe..f93c48be1 100644 --- a/tests/Unit/LdapTest.php +++ b/tests/Unit/LdapTest.php @@ -7,7 +7,7 @@ use App\Models\Ldap; use Tests\TestCase; #[Group('ldap')] -class LdapTest extends TestCase +final class LdapTest extends TestCase { use \phpmock\phpunit\PHPMock; diff --git a/tests/Unit/Listeners/LogListenerTest.php b/tests/Unit/Listeners/LogListenerTest.php index 18f72cfa1..336188679 100644 --- a/tests/Unit/Listeners/LogListenerTest.php +++ b/tests/Unit/Listeners/LogListenerTest.php @@ -8,7 +8,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -class LogListenerTest extends TestCase +final class LogListenerTest extends TestCase { public function testLogsEntryOnCheckoutableCheckedOut(): void { diff --git a/tests/Unit/LocationTest.php b/tests/Unit/LocationTest.php index c8780e396..1898d3f87 100644 --- a/tests/Unit/LocationTest.php +++ b/tests/Unit/LocationTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\Location; use Tests\TestCase; -class LocationTest extends TestCase +final class LocationTest extends TestCase { public function testPassesIfNotSelfParent(): void { diff --git a/tests/Unit/Models/Company/CompanyTest.php b/tests/Unit/Models/Company/CompanyTest.php index ad803fe6e..5d5cbd2a6 100644 --- a/tests/Unit/Models/Company/CompanyTest.php +++ b/tests/Unit/Models/Company/CompanyTest.php @@ -5,7 +5,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -class CompanyTest extends TestCase +final class CompanyTest extends TestCase { public function testACompanyCanHaveUsers(): void { diff --git a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php index 0c4aeeb5f..fff572c18 100644 --- a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php +++ b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php @@ -6,7 +6,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -class GetIdForCurrentUserTest extends TestCase +final class GetIdForCurrentUserTest extends TestCase { public function testReturnsProvidedValueWhenFullCompanySupportDisabled(): void { diff --git a/tests/Unit/Models/Labels/FieldOptionTest.php b/tests/Unit/Models/Labels/FieldOptionTest.php index 05788d2d8..4eb0829cb 100644 --- a/tests/Unit/Models/Labels/FieldOptionTest.php +++ b/tests/Unit/Models/Labels/FieldOptionTest.php @@ -7,7 +7,7 @@ use App\Models\Labels\FieldOption; use App\Models\User; use Tests\TestCase; -class FieldOptionTest extends TestCase +final class FieldOptionTest extends TestCase { public function testItDisplaysAssignedToProperly(): void { diff --git a/tests/Unit/NotificationTest.php b/tests/Unit/NotificationTest.php index 7a61fd709..b636bff7a 100644 --- a/tests/Unit/NotificationTest.php +++ b/tests/Unit/NotificationTest.php @@ -10,7 +10,7 @@ use App\Notifications\CheckoutAssetNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -class NotificationTest extends TestCase +final class NotificationTest extends TestCase { public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA(): void { diff --git a/tests/Unit/SnipeModelTest.php b/tests/Unit/SnipeModelTest.php index fe2a336ca..7a95655ab 100644 --- a/tests/Unit/SnipeModelTest.php +++ b/tests/Unit/SnipeModelTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\SnipeModel; use Tests\TestCase; -class SnipeModelTest extends TestCase +final class SnipeModelTest extends TestCase { public function testSetsPurchaseDatesAppropriately(): void { diff --git a/tests/Unit/SnipeTranslatorTest.php b/tests/Unit/SnipeTranslatorTest.php index 55ecaaa3c..6a582d073 100644 --- a/tests/Unit/SnipeTranslatorTest.php +++ b/tests/Unit/SnipeTranslatorTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use Tests\TestCase; -class SnipeTranslatorTest extends TestCase +final class SnipeTranslatorTest extends TestCase { // the 'meatiest' of these tests will explicitly choose non-English as the language, because otherwise // the fallback-logic (which is to fall-back to 'en-US') will be conflated in with the translation logic diff --git a/tests/Unit/StatuslabelTest.php b/tests/Unit/StatuslabelTest.php index e5dbc3824..dc57831fa 100644 --- a/tests/Unit/StatuslabelTest.php +++ b/tests/Unit/StatuslabelTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\Statuslabel; use Tests\TestCase; -class StatuslabelTest extends TestCase +final class StatuslabelTest extends TestCase { public function testRTDStatuslabelAdd(): void { diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index 99e7b322d..1d32bc83e 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\User; use Tests\TestCase; -class UserTest extends TestCase +final class UserTest extends TestCase { public function testFirstNameSplit(): void { From 82e795b6423cb56deace899c4e9e86cd6ac8cd13 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 13:30:34 -0700 Subject: [PATCH 053/118] Revert "Add return types to test methods" This reverts commit 83fb6826eedf7e7adc066b394a616b472b178414. --- .../AssetModels/Api/CreateAssetModelsTest.php | 6 +-- .../AssetModels/Api/IndexAssetModelsTest.php | 8 ++-- .../AssetModels/Api/UpdateAssetModelsTest.php | 12 ++--- .../AssetModels/Ui/CreateAssetModelsTest.php | 6 +-- .../AssetModels/Ui/IndexAssetModelsTest.php | 4 +- .../AssetModels/Ui/UpdateAssetModelsTest.php | 6 +-- tests/Feature/Assets/Api/AssetFilesTest.php | 8 ++-- tests/Feature/Assets/Api/AssetIndexTest.php | 16 +++---- .../Assets/Api/AssetsForSelectListTest.php | 4 +- .../Assets/Api/RequestableAssetTest.php | 6 +-- tests/Feature/Assets/Api/StoreAssetTest.php | 48 +++++++++---------- tests/Feature/Assets/Api/UpdateAssetTest.php | 48 +++++++++---------- .../Assets/Ui/BulkDeleteAssetsTest.php | 16 +++---- .../Feature/Assets/Ui/BulkEditAssetsTest.php | 12 ++--- tests/Feature/Assets/Ui/CloneAssetTest.php | 4 +- tests/Feature/Assets/Ui/EditAssetTest.php | 6 +-- .../Categories/Api/CreateCategoriesTest.php | 8 ++-- .../Categories/Api/IndexCategoriesTest.php | 6 +-- .../Categories/Api/UpdateCategoriesTest.php | 4 +- .../Categories/Ui/CreateCategoriesTest.php | 6 +-- .../Categories/Ui/IndexCategoriesTest.php | 4 +- .../Categories/Ui/UpdateCategoriesTest.php | 10 ++-- .../Feature/Checkins/Api/AssetCheckinTest.php | 20 ++++---- .../Checkins/Ui/AccessoryCheckinTest.php | 8 ++-- .../Feature/Checkins/Ui/AssetCheckinTest.php | 28 +++++------ .../Checkins/Ui/ComponentCheckinTest.php | 6 +-- .../Checkins/Ui/LicenseCheckinTest.php | 2 +- .../Ui/AccessoryAcceptanceTest.php | 6 +-- .../Checkouts/Api/AccessoryCheckoutTest.php | 16 +++---- .../Checkouts/Api/AssetCheckoutTest.php | 18 +++---- .../Checkouts/Api/ConsumableCheckoutTest.php | 12 ++--- .../Checkouts/Ui/AccessoryCheckoutTest.php | 24 +++++----- .../Checkouts/Ui/AssetCheckoutTest.php | 30 ++++++------ .../Checkouts/Ui/ComponentsCheckoutTest.php | 8 ++-- .../Checkouts/Ui/ConsumableCheckoutTest.php | 18 +++---- .../Checkouts/Ui/LicenseCheckoutTest.php | 12 ++--- .../Components/Api/ComponentIndexTest.php | 2 +- .../Components/Ui/ComponentIndexTest.php | 4 +- tests/Feature/Console/MergeUsersTest.php | 2 +- tests/Feature/Console/OptimizeTest.php | 2 +- .../Consumables/Api/ConsumableIndexTest.php | 4 +- .../Consumables/Api/ConsumableUpdateTest.php | 4 +- .../Consumables/Api/ConsumableViewTest.php | 2 +- .../Consumables/Ui/ConsumableIndexTest.php | 4 +- .../Consumables/Ui/ConsumableViewTest.php | 4 +- tests/Feature/DashboardTest.php | 2 +- .../Departments/Api/CreateDepartmentsTest.php | 2 +- .../Departments/Api/DepartmentsIndexTest.php | 8 ++-- .../Departments/Api/UpdateDepartmentsTest.php | 4 +- .../Departments/Ui/CreateDepartmentsTest.php | 4 +- .../Departments/Ui/IndexDepartmentsTest.php | 4 +- .../Departments/Ui/UpdateDepartmentsTest.php | 4 +- tests/Feature/Groups/Api/StoreGroupTest.php | 8 ++-- tests/Feature/Groups/Ui/IndexGroupTest.php | 4 +- .../Feature/Licenses/Api/LicenseIndexTest.php | 2 +- .../Feature/Licenses/Ui/CreateLicenseTest.php | 4 +- .../Feature/Licenses/Ui/LicenseIndexTest.php | 4 +- tests/Feature/Licenses/Ui/LicenseViewTest.php | 4 +- .../Feature/Livewire/CategoryEditFormTest.php | 18 +++---- .../Locations/Api/CreateLocationsTest.php | 6 +-- .../Locations/Api/DeleteLocationsTest.php | 12 ++--- .../Locations/Api/IndexLocationsTest.php | 6 +-- .../Api/LocationsForSelectListTest.php | 6 +-- .../Locations/Api/LocationsViewTest.php | 6 +-- .../Locations/Api/UpdateLocationsTest.php | 4 +- .../Locations/Ui/CreateLocationsTest.php | 4 +- .../Locations/Ui/IndexLocationsTest.php | 4 +- .../Locations/Ui/UpdateLocationsTest.php | 6 +-- .../EmailNotificationsUponCheckinTest.php | 4 +- .../SlackNotificationsUponCheckinTest.php | 14 +++--- .../SlackNotificationsUponCheckoutTest.php | 18 +++---- tests/Feature/Reporting/CustomReportTest.php | 6 +-- .../Reporting/UnacceptedAssetReportTest.php | 4 +- .../Feature/Settings/BrandingSettingsTest.php | 26 +++++----- tests/Feature/Settings/ShowSetUpPageTest.php | 2 +- tests/Feature/Users/Api/DeleteUserTest.php | 18 +++---- tests/Feature/Users/Api/RestoreUserTest.php | 10 ++-- tests/Feature/Users/Api/UpdateUserTest.php | 24 +++++----- tests/Feature/Users/Api/UserSearchTest.php | 12 ++--- .../Users/Api/UsersForSelectListTest.php | 8 ++-- tests/Feature/Users/Api/ViewUserTest.php | 2 +- tests/Feature/Users/Ui/DeleteUserTest.php | 24 +++++----- tests/Feature/Users/Ui/MergeUsersTest.php | 14 +++--- tests/Feature/Users/Ui/UpdateUserTest.php | 10 ++-- tests/Feature/Users/Ui/ViewUserTest.php | 6 +-- tests/Unit/AccessoryTest.php | 8 ++-- tests/Unit/AssetMaintenanceTest.php | 8 ++-- tests/Unit/AssetModelTest.php | 2 +- tests/Unit/AssetTest.php | 18 +++---- tests/Unit/CategoryTest.php | 4 +- tests/Unit/CompanyScopingTest.php | 6 +-- tests/Unit/ComponentTest.php | 6 +-- tests/Unit/CustomFieldTest.php | 18 +++---- tests/Unit/DepreciationTest.php | 4 +- tests/Unit/Helpers/HelperTest.php | 8 ++-- tests/Unit/LdapTest.php | 22 ++++----- tests/Unit/Listeners/LogListenerTest.php | 2 +- tests/Unit/LocationTest.php | 4 +- tests/Unit/Models/Company/CompanyTest.php | 2 +- .../Company/GetIdForCurrentUserTest.php | 8 ++-- tests/Unit/Models/Labels/FieldOptionTest.php | 2 +- tests/Unit/NotificationTest.php | 2 +- tests/Unit/SnipeModelTest.php | 14 +++--- tests/Unit/SnipeTranslatorTest.php | 20 ++++---- tests/Unit/StatuslabelTest.php | 12 ++--- tests/Unit/UserTest.php | 14 +++--- 106 files changed, 498 insertions(+), 498 deletions(-) diff --git a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php index 7325c240b..cc072505a 100644 --- a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php @@ -12,14 +12,14 @@ final class CreateAssetModelsTest extends TestCase { - public function testRequiresPermissionToCreateAssetModel(): void + public function testRequiresPermissionToCreateAssetModel() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.models.store')) ->assertForbidden(); } - public function testCanCreateAssetModelWithAssetModelType(): void + public function testCanCreateAssetModelWithAssetModelType() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.models.store'), [ @@ -37,7 +37,7 @@ final class CreateAssetModelsTest extends TestCase $this->assertEquals('Test AssetModel', $model->name); } - public function testCannotCreateAssetModelWithoutCategory(): void + public function testCannotCreateAssetModelWithoutCategory() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.models.store'), [ diff --git a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php index 7f83c97c2..6afa23c93 100644 --- a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php @@ -10,19 +10,19 @@ use Tests\TestCase; final class IndexAssetModelsTest extends TestCase { - public function testViewingAssetModelIndexRequiresAuthentication(): void + public function testViewingAssetModelIndexRequiresAuthentication() { $this->getJson(route('api.models.index'))->assertRedirect(); } - public function testViewingAssetModelIndexRequiresPermission(): void + public function testViewingAssetModelIndexRequiresPermission() { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.models.index')) ->assertForbidden(); } - public function testAssetModelIndexReturnsExpectedAssetModels(): void + public function testAssetModelIndexReturnsExpectedAssetModels() { AssetModel::factory()->count(3)->create(); @@ -42,7 +42,7 @@ final class IndexAssetModelsTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetModelIndexSearchReturnsExpectedAssetModels(): void + public function testAssetModelIndexSearchReturnsExpectedAssetModels() { AssetModel::factory()->count(3)->create(); AssetModel::factory()->count(1)->create(['name' => 'Test Model']); diff --git a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php index c9cc7b654..16401c385 100644 --- a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class UpdateAssetModelsTest extends TestCase { - public function testRequiresPermissionToEditAssetModel(): void + public function testRequiresPermissionToEditAssetModel() { $model = AssetModel::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -18,7 +18,7 @@ final class UpdateAssetModelsTest extends TestCase ->assertForbidden(); } - public function testCanUpdateAssetModelViaPatch(): void + public function testCanUpdateAssetModelViaPatch() { $model = AssetModel::factory()->create(); @@ -37,7 +37,7 @@ final class UpdateAssetModelsTest extends TestCase } - public function testCannotUpdateAssetModelViaPatchWithAccessoryCategory(): void + public function testCannotUpdateAssetModelViaPatchWithAccessoryCategory() { $category = Category::factory()->forAccessories()->create(); $model = AssetModel::factory()->create(); @@ -57,7 +57,7 @@ final class UpdateAssetModelsTest extends TestCase $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); } - public function testCannotUpdateAssetModelViaPatchWithLicenseCategory(): void + public function testCannotUpdateAssetModelViaPatchWithLicenseCategory() { $category = Category::factory()->forLicenses()->create(); $model = AssetModel::factory()->create(); @@ -77,7 +77,7 @@ final class UpdateAssetModelsTest extends TestCase $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); } - public function testCannotUpdateAssetModelViaPatchWithConsumableCategory(): void + public function testCannotUpdateAssetModelViaPatchWithConsumableCategory() { $category = Category::factory()->forConsumables()->create(); $model = AssetModel::factory()->create(); @@ -97,7 +97,7 @@ final class UpdateAssetModelsTest extends TestCase $this->assertNotEquals('category_id', $category->id, 'Category ID was not updated'); } - public function testCannotUpdateAssetModelViaPatchWithComponentCategory(): void + public function testCannotUpdateAssetModelViaPatchWithComponentCategory() { $category = Category::factory()->forComponents()->create(); $model = AssetModel::factory()->create(); diff --git a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php index c2d51b397..37c5fce39 100644 --- a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class CreateAssetModelsTest extends TestCase { - public function testPermissionRequiredToCreateAssetModel(): void + public function testPermissionRequiredToCreateAssetModel() { $this->actingAs(User::factory()->create()) ->post(route('models.store'), [ @@ -19,7 +19,7 @@ final class CreateAssetModelsTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateAssetModels(): void + public function testUserCanCreateAssetModels() { $this->assertFalse(AssetModel::where('name', 'Test Model')->exists()); @@ -33,7 +33,7 @@ final class CreateAssetModelsTest extends TestCase $this->assertTrue(AssetModel::where('name', 'Test Model')->exists()); } - public function testUserCannotUseAccessoryCategoryTypeAsAssetModelCategoryType(): void + public function testUserCannotUseAccessoryCategoryTypeAsAssetModelCategoryType() { $response = $this->actingAs(User::factory()->superuser()->create()) diff --git a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php index 69724a4a6..e2a65ae13 100644 --- a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class IndexAssetModelsTest extends TestCase { - public function testPermissionRequiredToViewAssetModelList(): void + public function testPermissionRequiredToViewAssetModelList() { $this->actingAs(User::factory()->create()) ->get(route('models.index')) ->assertForbidden(); } - public function testUserCanListAssetModels(): void + public function testUserCanListAssetModels() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('models.index')) diff --git a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php index 33336fa38..3d459413b 100644 --- a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class UpdateAssetModelsTest extends TestCase { - public function testPermissionRequiredToStoreAssetModel(): void + public function testPermissionRequiredToStoreAssetModel() { $this->actingAs(User::factory()->create()) ->post(route('models.store'), [ @@ -20,7 +20,7 @@ final class UpdateAssetModelsTest extends TestCase ->assertForbidden(); } - public function testUserCanEditAssetModels(): void + public function testUserCanEditAssetModels() { $category = Category::factory()->forAssets()->create(); $model = AssetModel::factory()->create(['name' => 'Test Model', 'category_id' => $category->id]); @@ -40,7 +40,7 @@ final class UpdateAssetModelsTest extends TestCase } - public function testUserCannotChangeAssetModelCategoryType(): void + public function testUserCannotChangeAssetModelCategoryType() { $category = Category::factory()->forAssets()->create(); $model = AssetModel::factory()->create(['name' => 'Test Model', 'category_id' => $category->id]); diff --git a/tests/Feature/Assets/Api/AssetFilesTest.php b/tests/Feature/Assets/Api/AssetFilesTest.php index ad30f9629..136e90aa2 100644 --- a/tests/Feature/Assets/Api/AssetFilesTest.php +++ b/tests/Feature/Assets/Api/AssetFilesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class AssetFilesTest extends TestCase { - public function testAssetApiAcceptsFileUpload(): void + public function testAssetApiAcceptsFileUpload() { // Upload a file to an asset @@ -28,7 +28,7 @@ final class AssetFilesTest extends TestCase ->assertOk(); } - public function testAssetApiListsFiles(): void + public function testAssetApiListsFiles() { // List all files on an asset @@ -50,7 +50,7 @@ final class AssetFilesTest extends TestCase ]); } - public function testAssetApiDownloadsFile(): void + public function testAssetApiDownloadsFile() { // Download a file from an asset @@ -84,7 +84,7 @@ final class AssetFilesTest extends TestCase ->assertOk(); } - public function testAssetApiDeletesFile(): void + public function testAssetApiDeletesFile() { // Delete a file from an asset diff --git a/tests/Feature/Assets/Api/AssetIndexTest.php b/tests/Feature/Assets/Api/AssetIndexTest.php index 0fd81862a..797499137 100644 --- a/tests/Feature/Assets/Api/AssetIndexTest.php +++ b/tests/Feature/Assets/Api/AssetIndexTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; final class AssetIndexTest extends TestCase { - public function testAssetApiIndexReturnsExpectedAssets(): void + public function testAssetApiIndexReturnsExpectedAssets() { Asset::factory()->count(3)->create(); @@ -31,7 +31,7 @@ final class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsDisplayUpcomingAuditsDue(): void + public function testAssetApiIndexReturnsDisplayUpcomingAuditsDue() { Asset::factory()->count(3)->create(['next_audit_date' => Carbon::now()->format('Y-m-d')]); @@ -47,7 +47,7 @@ final class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsOverdueForAudit(): void + public function testAssetApiIndexReturnsOverdueForAudit() { Asset::factory()->count(3)->create(['next_audit_date' => Carbon::now()->subDays(1)->format('Y-m-d')]); @@ -63,7 +63,7 @@ final class AssetIndexTest extends TestCase } - public function testAssetApiIndexReturnsDueOrOverdueForAudit(): void + public function testAssetApiIndexReturnsDueOrOverdueForAudit() { Asset::factory()->count(3)->create(['next_audit_date' => Carbon::now()->format('Y-m-d')]); Asset::factory()->count(2)->create(['next_audit_date' => Carbon::now()->subDays(1)->format('Y-m-d')]); @@ -81,7 +81,7 @@ final class AssetIndexTest extends TestCase - public function testAssetApiIndexReturnsDueForExpectedCheckin(): void + public function testAssetApiIndexReturnsDueForExpectedCheckin() { Asset::factory()->count(3)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->format('Y-m-d')]); @@ -97,7 +97,7 @@ final class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsOverdueForExpectedCheckin(): void + public function testAssetApiIndexReturnsOverdueForExpectedCheckin() { Asset::factory()->count(3)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->subDays(1)->format('Y-m-d')]); @@ -111,7 +111,7 @@ final class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testAssetApiIndexReturnsDueOrOverdueForExpectedCheckin(): void + public function testAssetApiIndexReturnsDueOrOverdueForExpectedCheckin() { Asset::factory()->count(3)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->subDays(1)->format('Y-m-d')]); Asset::factory()->count(2)->create(['assigned_to' => '1', 'expected_checkin' => Carbon::now()->format('Y-m-d')]); @@ -126,7 +126,7 @@ final class AssetIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 5)->etc()); } - public function testAssetApiIndexAdheresToCompanyScoping(): void + public function testAssetApiIndexAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Assets/Api/AssetsForSelectListTest.php b/tests/Feature/Assets/Api/AssetsForSelectListTest.php index b7837f758..a44996f63 100644 --- a/tests/Feature/Assets/Api/AssetsForSelectListTest.php +++ b/tests/Feature/Assets/Api/AssetsForSelectListTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class AssetsForSelectListTest extends TestCase { - public function testAssetsCanBeSearchedForByAssetTag(): void + public function testAssetsCanBeSearchedForByAssetTag() { Asset::factory()->create(['asset_tag' => '0001']); Asset::factory()->create(['asset_tag' => '0002']); @@ -25,7 +25,7 @@ final class AssetsForSelectListTest extends TestCase $this->assertTrue($results->pluck('text')->contains(fn($text) => str_contains($text, '0002'))); } - public function testAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled(): void + public function testAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Assets/Api/RequestableAssetTest.php b/tests/Feature/Assets/Api/RequestableAssetTest.php index 10188e84e..9fc81a5ff 100644 --- a/tests/Feature/Assets/Api/RequestableAssetTest.php +++ b/tests/Feature/Assets/Api/RequestableAssetTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; final class RequestableAssetTest extends TestCase { - public function testViewingRequestableAssetsRequiresCorrectPermission(): void + public function testViewingRequestableAssetsRequiresCorrectPermission() { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.assets.requestable')) ->assertForbidden(); } - public function testReturnsRequestableAssets(): void + public function testReturnsRequestableAssets() { $requestableAsset = Asset::factory()->requestable()->create(['asset_tag' => 'requestable']); $nonRequestableAsset = Asset::factory()->nonrequestable()->create(['asset_tag' => 'non-requestable']); @@ -28,7 +28,7 @@ final class RequestableAssetTest extends TestCase ->assertResponseDoesNotContainInRows($nonRequestableAsset, 'asset_tag'); } - public function testRequestableAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled(): void + public function testRequestableAssetsAreScopedToCompanyWhenMultipleCompanySupportEnabled() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Assets/Api/StoreAssetTest.php b/tests/Feature/Assets/Api/StoreAssetTest.php index 320455aa4..437c456a6 100644 --- a/tests/Feature/Assets/Api/StoreAssetTest.php +++ b/tests/Feature/Assets/Api/StoreAssetTest.php @@ -16,14 +16,14 @@ use Tests\TestCase; final class StoreAssetTest extends TestCase { - public function testRequiresPermissionToCreateAsset(): void + public function testRequiresPermissionToCreateAsset() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.assets.store')) ->assertForbidden(); } - public function testAllAssetAttributesAreStored(): void + public function testAllAssetAttributesAreStored() { $company = Company::factory()->create(); $location = Location::factory()->create(); @@ -83,7 +83,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals(10, $asset->warranty_months); } - public function testSetsLastAuditDateToMidnightOfProvidedDate(): void + public function testSetsLastAuditDateToMidnightOfProvidedDate() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.assets.store'), [ @@ -99,7 +99,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals('2023-09-03 00:00:00', $asset->last_audit_date); } - public function testLastAuditDateCanBeNull(): void + public function testLastAuditDateCanBeNull() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.assets.store'), [ @@ -115,7 +115,7 @@ final class StoreAssetTest extends TestCase $this->assertNull($asset->last_audit_date); } - public function testNonDateUsedForLastAuditDateReturnsValidationError(): void + public function testNonDateUsedForLastAuditDateReturnsValidationError() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.assets.store'), [ @@ -129,7 +129,7 @@ final class StoreAssetTest extends TestCase $this->assertNotNull($response->json('messages.last_audit_date')); } - public function testArchivedDepreciateAndPhysicalCanBeNull(): void + public function testArchivedDepreciateAndPhysicalCanBeNull() { $model = AssetModel::factory()->ipadModel()->create(); $status = Statuslabel::factory()->create(); @@ -154,7 +154,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals(0, $asset->depreciate); } - public function testArchivedDepreciateAndPhysicalCanBeEmpty(): void + public function testArchivedDepreciateAndPhysicalCanBeEmpty() { $model = AssetModel::factory()->ipadModel()->create(); $status = Statuslabel::factory()->create(); @@ -179,7 +179,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals(0, $asset->depreciate); } - public function testAssetEolDateIsCalculatedIfPurchaseDateSet(): void + public function testAssetEolDateIsCalculatedIfPurchaseDateSet() { $model = AssetModel::factory()->mbp13Model()->create(); $status = Statuslabel::factory()->create(); @@ -200,7 +200,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals('2024-01-01', $asset->asset_eol_date); } - public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet(): void + public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet() { $model = AssetModel::factory()->mbp13Model()->create(); $status = Statuslabel::factory()->create(); @@ -220,7 +220,7 @@ final class StoreAssetTest extends TestCase $this->assertNull($asset->asset_eol_date); } - public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet(): void + public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet() { $model = AssetModel::factory()->mbp13Model()->create(); $status = Statuslabel::factory()->create(); @@ -242,7 +242,7 @@ final class StoreAssetTest extends TestCase $this->assertTrue($asset->eol_explicit); } - public function testAssetGetsAssetTagWithAutoIncrement(): void + public function testAssetGetsAssetTagWithAutoIncrement() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -262,7 +262,7 @@ final class StoreAssetTest extends TestCase $this->assertNotNull($asset->asset_tag); } - public function testAssetCreationFailsWithNoAssetTagOrAutoIncrement(): void + public function testAssetCreationFailsWithNoAssetTagOrAutoIncrement() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -278,7 +278,7 @@ final class StoreAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testStoresPeriodAsDecimalSeparatorForPurchaseCost(): void + public function testStoresPeriodAsDecimalSeparatorForPurchaseCost() { $this->settings->set([ 'default_currency' => 'USD', @@ -300,7 +300,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals(12.34, $asset->purchase_cost); } - public function testStoresPeriodAsCommaSeparatorForPurchaseCost(): void + public function testStoresPeriodAsCommaSeparatorForPurchaseCost() { $this->settings->set([ 'default_currency' => 'EUR', @@ -322,7 +322,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals(12.34, $asset->purchase_cost); } - public function testUniqueSerialNumbersIsEnforcedWhenEnabled(): void + public function testUniqueSerialNumbersIsEnforcedWhenEnabled() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -350,7 +350,7 @@ final class StoreAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testUniqueSerialNumbersIsNotEnforcedWhenDisabled(): void + public function testUniqueSerialNumbersIsNotEnforcedWhenDisabled() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -378,7 +378,7 @@ final class StoreAssetTest extends TestCase ->assertStatusMessageIs('success'); } - public function testAssetTagsMustBeUniqueWhenUndeleted(): void + public function testAssetTagsMustBeUniqueWhenUndeleted() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -405,7 +405,7 @@ final class StoreAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetTagsCanBeDuplicatedIfDeleted(): void + public function testAssetTagsCanBeDuplicatedIfDeleted() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -435,7 +435,7 @@ final class StoreAssetTest extends TestCase ->assertStatusMessageIs('success'); } - public function testAnAssetCanBeCheckedOutToUserOnStore(): void + public function testAnAssetCanBeCheckedOutToUserOnStore() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -461,7 +461,7 @@ final class StoreAssetTest extends TestCase $this->assertTrue($asset->assignedTo->is($userAssigned)); } - public function testAnAssetCanBeCheckedOutToLocationOnStore(): void + public function testAnAssetCanBeCheckedOutToLocationOnStore() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -487,7 +487,7 @@ final class StoreAssetTest extends TestCase $this->assertTrue($asset->location->is($location)); } - public function testAnAssetCanBeCheckedOutToAssetOnStore(): void + public function testAnAssetCanBeCheckedOutToAssetOnStore() { $model = AssetModel::factory()->create(); $status = Statuslabel::factory()->create(); @@ -514,7 +514,7 @@ final class StoreAssetTest extends TestCase $this->assertTrue($asset->assignedAssets()->find($response['payload']['id'])->is($apiAsset)); } - public function testCompanyIdNeedsToBeInteger(): void + public function testCompanyIdNeedsToBeInteger() { $this->actingAsForApi(User::factory()->createAssets()->create()) ->postJson(route('api.assets.store'), [ @@ -526,7 +526,7 @@ final class StoreAssetTest extends TestCase }); } - public function testEncryptedCustomFieldCanBeStored(): void + public function testEncryptedCustomFieldCanBeStored() { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -550,7 +550,7 @@ final class StoreAssetTest extends TestCase $this->assertEquals('This is encrypted field', Crypt::decrypt($asset->{$field->db_column_name()})); } - public function testPermissionNeededToStoreEncryptedField(): void + public function testPermissionNeededToStoreEncryptedField() { // @todo: $this->markTestIncomplete(); diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index f964ea1ae..f58c26b05 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -15,14 +15,14 @@ use Tests\TestCase; final class UpdateAssetTest extends TestCase { - public function testThatANonExistentAssetIdReturnsError(): void + public function testThatANonExistentAssetIdReturnsError() { $this->actingAsForApi(User::factory()->editAssets()->createAssets()->create()) ->patchJson(route('api.assets.update', 123456789)) ->assertStatusMessageIs('error'); } - public function testRequiresPermissionToUpdateAsset(): void + public function testRequiresPermissionToUpdateAsset() { $asset = Asset::factory()->create(); @@ -31,7 +31,7 @@ final class UpdateAssetTest extends TestCase ->assertForbidden(); } - public function testGivenPermissionUpdateAssetIsAllowed(): void + public function testGivenPermissionUpdateAssetIsAllowed() { $asset = Asset::factory()->create(); @@ -43,7 +43,7 @@ final class UpdateAssetTest extends TestCase ->assertOk(); } - public function testAllAssetAttributesAreStored(): void + public function testAllAssetAttributesAreStored() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -103,7 +103,7 @@ final class UpdateAssetTest extends TestCase $this->assertEquals('2023-09-03 00:00:00', $updatedAsset->last_audit_date); } - public function testAssetEolDateIsCalculatedIfPurchaseDateUpdated(): void + public function testAssetEolDateIsCalculatedIfPurchaseDateUpdated() { $asset = Asset::factory()->laptopMbp()->noPurchaseOrEolDate()->create(); @@ -120,7 +120,7 @@ final class UpdateAssetTest extends TestCase $this->assertEquals('2024-01-01', $asset->asset_eol_date); } - public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet(): void + public function testAssetEolDateIsNotCalculatedIfPurchaseDateNotSet() { $asset = Asset::factory()->laptopMbp()->noPurchaseOrEolDate()->create(); @@ -138,7 +138,7 @@ final class UpdateAssetTest extends TestCase $this->assertEquals('2022-01-01', $asset->asset_eol_date); } - public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet(): void + public function testAssetEolExplicitIsSetIfAssetEolDateIsExplicitlySet() { $asset = Asset::factory()->laptopMbp()->create(); @@ -156,7 +156,7 @@ final class UpdateAssetTest extends TestCase $this->assertTrue($asset->eol_explicit); } - public function testAssetTagCannotUpdateToNullValue(): void + public function testAssetTagCannotUpdateToNullValue() { $asset = Asset::factory()->laptopMbp()->create(); @@ -168,7 +168,7 @@ final class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetTagCannotUpdateToEmptyStringValue(): void + public function testAssetTagCannotUpdateToEmptyStringValue() { $asset = Asset::factory()->laptopMbp()->create(); @@ -180,7 +180,7 @@ final class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testModelIdCannotUpdateToNullValue(): void + public function testModelIdCannotUpdateToNullValue() { $asset = Asset::factory()->laptopMbp()->create(); @@ -192,7 +192,7 @@ final class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testModelIdCannotUpdateToEmptyStringValue(): void + public function testModelIdCannotUpdateToEmptyStringValue() { $asset = Asset::factory()->laptopMbp()->create(); @@ -204,7 +204,7 @@ final class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testStatusIdCannotUpdateToNullValue(): void + public function testStatusIdCannotUpdateToNullValue() { $asset = Asset::factory()->laptopMbp()->create(); @@ -216,7 +216,7 @@ final class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testStatusIdCannotUpdateToEmptyStringValue(): void + public function testStatusIdCannotUpdateToEmptyStringValue() { $asset = Asset::factory()->laptopMbp()->create(); @@ -228,7 +228,7 @@ final class UpdateAssetTest extends TestCase ->assertStatusMessageIs('error'); } - public function testIfRtdLocationIdIsSetWithoutLocationIdAssetReturnsToDefault(): void + public function testIfRtdLocationIdIsSetWithoutLocationIdAssetReturnsToDefault() { $location = Location::factory()->create(); $asset = Asset::factory()->laptopMbp()->create([ @@ -247,7 +247,7 @@ final class UpdateAssetTest extends TestCase $this->assertTrue($asset->location->is($rtdLocation)); } - public function testIfLocationAndRtdLocationAreSetLocationIdIsLocation(): void + public function testIfLocationAndRtdLocationAreSetLocationIdIsLocation() { $location = Location::factory()->create(); $asset = Asset::factory()->laptopMbp()->create(); @@ -265,7 +265,7 @@ final class UpdateAssetTest extends TestCase $this->assertTrue($asset->location->is($location)); } - public function testEncryptedCustomFieldCanBeUpdated(): void + public function testEncryptedCustomFieldCanBeUpdated() { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -284,7 +284,7 @@ final class UpdateAssetTest extends TestCase $this->assertEquals('This is encrypted field', Crypt::decrypt($asset->{$field->db_column_name()})); } - public function testPermissionNeededToUpdateEncryptedField(): void + public function testPermissionNeededToUpdateEncryptedField() { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -308,7 +308,7 @@ final class UpdateAssetTest extends TestCase $this->assertEquals("encrypted value should not change", Crypt::decrypt($asset->{$field->db_column_name()})); } - public function testCheckoutToUserOnAssetUpdate(): void + public function testCheckoutToUserOnAssetUpdate() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -327,7 +327,7 @@ final class UpdateAssetTest extends TestCase $this->assertEquals($asset->assigned_type, 'App\Models\User'); } - public function testCheckoutToDeletedUserFailsOnAssetUpdate(): void + public function testCheckoutToDeletedUserFailsOnAssetUpdate() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -346,7 +346,7 @@ final class UpdateAssetTest extends TestCase $this->assertNull($asset->assigned_type); } - public function testCheckoutToLocationOnAssetUpdate(): void + public function testCheckoutToLocationOnAssetUpdate() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -366,7 +366,7 @@ final class UpdateAssetTest extends TestCase } - public function testCheckoutToDeletedLocationFailsOnAssetUpdate(): void + public function testCheckoutToDeletedLocationFailsOnAssetUpdate() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -385,7 +385,7 @@ final class UpdateAssetTest extends TestCase $this->assertNull($asset->assigned_type); } - public function testCheckoutAssetOnAssetUpdate(): void + public function testCheckoutAssetOnAssetUpdate() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -406,7 +406,7 @@ final class UpdateAssetTest extends TestCase } - public function testCheckoutToDeletedAssetFailsOnAssetUpdate(): void + public function testCheckoutToDeletedAssetFailsOnAssetUpdate() { $asset = Asset::factory()->create(); $user = User::factory()->editAssets()->create(); @@ -425,7 +425,7 @@ final class UpdateAssetTest extends TestCase $this->assertNull($asset->assigned_type); } - public function testAssetCannotBeUpdatedByUserInSeparateCompany(): void + public function testAssetCannotBeUpdatedByUserInSeparateCompany() { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php index 3be29e2d5..26478d37f 100644 --- a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class BulkDeleteAssetsTest extends TestCase { - public function testUserWithPermissionsCanAccessPage(): void + public function testUserWithPermissionsCanAccessPage() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $assets = Asset::factory()->count(2)->create(); @@ -25,7 +25,7 @@ final class BulkDeleteAssetsTest extends TestCase ])->assertStatus(200); } - public function testStandardUserCannotAccessPage(): void + public function testStandardUserCannotAccessPage() { $user = User::factory()->create(); $assets = Asset::factory()->count(2)->create(); @@ -38,7 +38,7 @@ final class BulkDeleteAssetsTest extends TestCase ])->assertStatus(403); } - public function testPageRedirectFromInterstitialIfNoAssetsSelectedToDelete(): void + public function testPageRedirectFromInterstitialIfNoAssetsSelectedToDelete() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $response = $this->actingAs($user) @@ -52,7 +52,7 @@ final class BulkDeleteAssetsTest extends TestCase $this->followRedirects($response)->assertSee('alert-danger'); } - public function testPageRedirectFromInterstitialIfNoAssetsSelectedToRestore(): void + public function testPageRedirectFromInterstitialIfNoAssetsSelectedToRestore() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $response = $this->actingAs($user) @@ -68,7 +68,7 @@ final class BulkDeleteAssetsTest extends TestCase } - public function testBulkDeleteSelectedAssetsFromInterstitial(): void + public function testBulkDeleteSelectedAssetsFromInterstitial() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $assets = Asset::factory()->count(2)->create(); @@ -89,7 +89,7 @@ final class BulkDeleteAssetsTest extends TestCase $this->followRedirects($response)->assertSee('alert-success'); } - public function testBulkRestoreSelectedAssetsFromInterstitial(): void + public function testBulkRestoreSelectedAssetsFromInterstitial() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $asset = Asset::factory()->deleted()->create(); @@ -116,7 +116,7 @@ final class BulkDeleteAssetsTest extends TestCase } - public function testActionLogCreatedUponBulkDelete(): void + public function testActionLogCreatedUponBulkDelete() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $asset = Asset::factory()->create(); @@ -139,7 +139,7 @@ final class BulkDeleteAssetsTest extends TestCase ); } - public function testActionLogCreatedUponBulkRestore(): void + public function testActionLogCreatedUponBulkRestore() { $user = User::factory()->viewAssets()->deleteAssets()->editAssets()->create(); $asset = Asset::factory()->deleted()->create(); diff --git a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php index 359685297..d4253d4c7 100644 --- a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php @@ -14,7 +14,7 @@ use Tests\TestCase; final class BulkEditAssetsTest extends TestCase { - public function testUserWithPermissionsCanAccessPage(): void + public function testUserWithPermissionsCanAccessPage() { $user = User::factory()->viewAssets()->editAssets()->create(); $assets = Asset::factory()->count(2)->create(); @@ -29,7 +29,7 @@ final class BulkEditAssetsTest extends TestCase ])->assertStatus(200); } - public function testStandardUserCannotAccessPage(): void + public function testStandardUserCannotAccessPage() { $user = User::factory()->create(); $assets = Asset::factory()->count(2)->create(); @@ -44,7 +44,7 @@ final class BulkEditAssetsTest extends TestCase ])->assertStatus(403); } - public function testBulkEditAssetsAcceptsAllPossibleAttributes(): void + public function testBulkEditAssetsAcceptsAllPossibleAttributes() { // sets up all needed models and attributes on the assets // this test does not deal with custom fields - will be dealt with in separate cases @@ -109,7 +109,7 @@ final class BulkEditAssetsTest extends TestCase }); } - public function testBulkEditAssetsAcceptsAndUpdatesUnencryptedCustomFields(): void + public function testBulkEditAssetsAcceptsAndUpdatesUnencryptedCustomFields() { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -141,7 +141,7 @@ final class BulkEditAssetsTest extends TestCase }); } - public function testBulkEditAssetsAcceptsAndUpdatesEncryptedCustomFields(): void + public function testBulkEditAssetsAcceptsAndUpdatesEncryptedCustomFields() { $this->markIncompleteIfMySQL('Custom Fields tests do not work on MySQL'); @@ -165,7 +165,7 @@ final class BulkEditAssetsTest extends TestCase }); } - public function testBulkEditAssetsRequiresAdminUserToUpdateEncryptedCustomFields(): void + public function testBulkEditAssetsRequiresAdminUserToUpdateEncryptedCustomFields() { $this->markIncompleteIfMySQL('Custom Fields tests do not work on mysql'); $edit_user = User::factory()->editAssets()->create(); diff --git a/tests/Feature/Assets/Ui/CloneAssetTest.php b/tests/Feature/Assets/Ui/CloneAssetTest.php index ebf7cd657..724727600 100644 --- a/tests/Feature/Assets/Ui/CloneAssetTest.php +++ b/tests/Feature/Assets/Ui/CloneAssetTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class CloneAssetTest extends TestCase { - public function testPermissionRequiredToCreateAssetModel(): void + public function testPermissionRequiredToCreateAssetModel() { $asset = Asset::factory()->create(); $this->actingAs(User::factory()->create()) @@ -24,7 +24,7 @@ final class CloneAssetTest extends TestCase $response->assertStatus(200); } - public function testAssetCanBeCloned(): void + public function testAssetCanBeCloned() { $asset_to_clone = Asset::factory()->create(['name'=>'Asset to clone']); $this->actingAs(User::factory()->createAssets()->create()) diff --git a/tests/Feature/Assets/Ui/EditAssetTest.php b/tests/Feature/Assets/Ui/EditAssetTest.php index 6561df472..bb2eb8de4 100644 --- a/tests/Feature/Assets/Ui/EditAssetTest.php +++ b/tests/Feature/Assets/Ui/EditAssetTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; final class EditAssetTest extends TestCase { - public function testPermissionRequiredToViewLicense(): void + public function testPermissionRequiredToViewLicense() { $asset = Asset::factory()->create(); $this->actingAs(User::factory()->create()) @@ -27,7 +27,7 @@ final class EditAssetTest extends TestCase $response->assertStatus(200); } - public function testAssetEditPostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testAssetEditPostIsRedirectedIfRedirectSelectionIsIndex() { $asset = Asset::factory()->assignedToUser()->create(); @@ -45,7 +45,7 @@ final class EditAssetTest extends TestCase ->assertRedirect(route('hardware.index')); $this->assertDatabaseHas('assets', ['asset_tag' => 'New Asset Tag']); } - public function testAssetEditPostIsRedirectedIfRedirectSelectionIsItem(): void + public function testAssetEditPostIsRedirectedIfRedirectSelectionIsItem() { $asset = Asset::factory()->create(); diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php index f5c0d6ac6..8c9b47992 100644 --- a/tests/Feature/Categories/Api/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -13,14 +13,14 @@ final class CreateCategoriesTest extends TestCase { - public function testRequiresPermissionToCreateCategory(): void + public function testRequiresPermissionToCreateCategory() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.categories.store')) ->assertForbidden(); } - public function testCanCreateCategoryWithValidCategoryType(): void + public function testCanCreateCategoryWithValidCategoryType() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.categories.store'), [ @@ -41,7 +41,7 @@ final class CreateCategoriesTest extends TestCase $this->assertEquals('accessory', $category->category_type); } - public function testCannotCreateCategoryWithoutCategoryType(): void + public function testCannotCreateCategoryWithoutCategoryType() { $response = $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.categories.store'), [ @@ -59,7 +59,7 @@ final class CreateCategoriesTest extends TestCase } - public function testCannotCreateCategoryWithInvalidCategoryType(): void + public function testCannotCreateCategoryWithInvalidCategoryType() { $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.categories.store'), [ diff --git a/tests/Feature/Categories/Api/IndexCategoriesTest.php b/tests/Feature/Categories/Api/IndexCategoriesTest.php index a763dbbec..139ec1206 100644 --- a/tests/Feature/Categories/Api/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Api/IndexCategoriesTest.php @@ -10,14 +10,14 @@ use Tests\TestCase; final class IndexCategoriesTest extends TestCase { - public function testViewingCategoryIndexRequiresPermission(): void + public function testViewingCategoryIndexRequiresPermission() { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.departments.index')) ->assertForbidden(); } - public function testCategoryIndexReturnsExpectedSearchResults(): void + public function testCategoryIndexReturnsExpectedSearchResults() { Category::factory()->count(10)->create(); Category::factory()->count(1)->forAssets()->create(['name' => 'My Test Category']); @@ -43,7 +43,7 @@ final class IndexCategoriesTest extends TestCase } - public function testCategoryIndexReturnsExpectedCategories(): void + public function testCategoryIndexReturnsExpectedCategories() { $this->markTestIncomplete('Not sure why the category factory is generating one more than expected here.'); Category::factory()->count(3)->create(); diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php index 6b3bd76ad..8a8923930 100644 --- a/tests/Feature/Categories/Api/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class UpdateCategoriesTest extends TestCase { - public function testCanUpdateCategoryViaPatchWithoutCategoryType(): void + public function testCanUpdateCategoryViaPatchWithoutCategoryType() { $category = Category::factory()->create(); @@ -30,7 +30,7 @@ final class UpdateCategoriesTest extends TestCase } - public function testCannotUpdateCategoryViaPatchWithCategoryType(): void + public function testCannotUpdateCategoryViaPatchWithCategoryType() { $category = Category::factory()->create(); diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php index 5deffbe20..4471c7647 100644 --- a/tests/Feature/Categories/Ui/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class CreateCategoriesTest extends TestCase { - public function testPermissionRequiredToCreateCategories(): void + public function testPermissionRequiredToCreateCategories() { $this->actingAs(User::factory()->create()) ->post(route('categories.store'), [ @@ -19,7 +19,7 @@ final class CreateCategoriesTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateCategories(): void + public function testUserCanCreateCategories() { $this->assertFalse(Category::where('name', 'Test Category')->exists()); @@ -33,7 +33,7 @@ final class CreateCategoriesTest extends TestCase $this->assertTrue(Category::where('name', 'Test Category')->exists()); } - public function testUserCannotCreateCategoriesWithInvalidType(): void + public function testUserCannotCreateCategoriesWithInvalidType() { $this->assertFalse(Category::where('name', 'Test Category')->exists()); diff --git a/tests/Feature/Categories/Ui/IndexCategoriesTest.php b/tests/Feature/Categories/Ui/IndexCategoriesTest.php index 571e401b8..7f740f332 100644 --- a/tests/Feature/Categories/Ui/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Ui/IndexCategoriesTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class IndexCategoriesTest extends TestCase { - public function testPermissionRequiredToViewCategoryList(): void + public function testPermissionRequiredToViewCategoryList() { $this->actingAs(User::factory()->create()) ->get(route('categories.index')) ->assertForbidden(); } - public function testUserCanListCategories(): void + public function testUserCanListCategories() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('categories.index')) diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php index 45e02a0a6..fd2e47446 100644 --- a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class UpdateCategoriesTest extends TestCase { - public function testPermissionRequiredToStoreCategory(): void + public function testPermissionRequiredToStoreCategory() { $this->actingAs(User::factory()->create()) ->post(route('categories.store'), [ @@ -20,7 +20,7 @@ final class UpdateCategoriesTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateCategories(): void + public function testUserCanCreateCategories() { $this->actingAs(User::factory()->superuser()->create()) ->post(route('categories.store'), [ @@ -34,7 +34,7 @@ final class UpdateCategoriesTest extends TestCase $this->assertTrue(Category::where('name', 'Test Category')->exists()); } - public function testUserCanEditAssetCategory(): void + public function testUserCanEditAssetCategory() { $category = Category::factory()->forAssets()->create(['name' => 'Test Category']); $this->assertTrue(Category::where('name', 'Test Category')->exists()); @@ -52,7 +52,7 @@ final class UpdateCategoriesTest extends TestCase } - public function testUserCanChangeCategoryTypeIfNoAssetsAssociated(): void + public function testUserCanChangeCategoryTypeIfNoAssetsAssociated() { $category = Category::factory()->forAssets()->create(['name' => 'Test Category']); $this->assertTrue(Category::where('name', 'Test Category')->exists()); @@ -72,7 +72,7 @@ final class UpdateCategoriesTest extends TestCase } - public function testUserCannotChangeCategoryTypeIfAssetsAreAssociated(): void + public function testUserCannotChangeCategoryTypeIfAssetsAreAssociated() { Asset::factory()->count(5)->laptopMbp()->create(); $category = Category::where('name', 'Laptops')->first(); diff --git a/tests/Feature/Checkins/Api/AssetCheckinTest.php b/tests/Feature/Checkins/Api/AssetCheckinTest.php index 1891a9d28..42f683421 100644 --- a/tests/Feature/Checkins/Api/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Api/AssetCheckinTest.php @@ -15,28 +15,28 @@ use Tests\TestCase; final class AssetCheckinTest extends TestCase { - public function testCheckingInAssetRequiresCorrectPermission(): void + public function testCheckingInAssetRequiresCorrectPermission() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.asset.checkin', Asset::factory()->assignedToUser()->create())) ->assertForbidden(); } - public function testCannotCheckInNonExistentAsset(): void + public function testCannotCheckInNonExistentAsset() { $this->actingAsForApi(User::factory()->checkinAssets()->create()) ->postJson(route('api.asset.checkin', ['id' => 'does-not-exist'])) ->assertStatusMessageIs('error'); } - public function testCannotCheckInAssetThatIsNotCheckedOut(): void + public function testCannotCheckInAssetThatIsNotCheckedOut() { $this->actingAsForApi(User::factory()->checkinAssets()->create()) ->postJson(route('api.asset.checkin', Asset::factory()->create()->id)) ->assertStatusMessageIs('error'); } - public function testAssetCanBeCheckedIn(): void + public function testAssetCanBeCheckedIn() { Event::fake([CheckoutableCheckedIn::class]); @@ -76,7 +76,7 @@ final class AssetCheckinTest extends TestCase }, 1); } - public function testLocationIsSetToRTDLocationByDefaultUponCheckin(): void + public function testLocationIsSetToRTDLocationByDefaultUponCheckin() { $rtdLocation = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create([ @@ -90,7 +90,7 @@ final class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->location()->is($rtdLocation)); } - public function testDefaultLocationCanBeUpdatedUponCheckin(): void + public function testDefaultLocationCanBeUpdatedUponCheckin() { $location = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create(); @@ -104,7 +104,7 @@ final class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->defaultLoc()->is($location)); } - public function testAssetsLicenseSeatsAreClearedUponCheckin(): void + public function testAssetsLicenseSeatsAreClearedUponCheckin() { $asset = Asset::factory()->assignedToUser()->create(); LicenseSeat::factory()->assignedToUser()->for($asset)->create(); @@ -117,7 +117,7 @@ final class AssetCheckinTest extends TestCase $this->assertNull($asset->refresh()->licenseseats->first()->assigned_to); } - public function testLegacyLocationValuesSetToZeroAreUpdated(): void + public function testLegacyLocationValuesSetToZeroAreUpdated() { $asset = Asset::factory()->canBeInvalidUponCreation()->assignedToUser()->create([ 'rtd_location_id' => 0, @@ -131,7 +131,7 @@ final class AssetCheckinTest extends TestCase $this->assertEquals($asset->location_id, $asset->rtd_location_id); } - public function testPendingCheckoutAcceptancesAreClearedUponCheckin(): void + public function testPendingCheckoutAcceptancesAreClearedUponCheckin() { $asset = Asset::factory()->assignedToUser()->create(); @@ -143,7 +143,7 @@ final class AssetCheckinTest extends TestCase $this->assertFalse($acceptance->exists(), 'Acceptance was not deleted'); } - public function testCheckinTimeAndActionLogNoteCanBeSet(): void + public function testCheckinTimeAndActionLogNoteCanBeSet() { Event::fake(); diff --git a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php index 0eb63b478..9084275d9 100644 --- a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php @@ -12,7 +12,7 @@ use Tests\TestCase; final class AccessoryCheckinTest extends TestCase { - public function testCheckingInAccessoryRequiresCorrectPermission(): void + public function testCheckingInAccessoryRequiresCorrectPermission() { $accessory = Accessory::factory()->checkedOutToUser()->create(); @@ -21,7 +21,7 @@ final class AccessoryCheckinTest extends TestCase ->assertForbidden(); } - public function testAccessoryCanBeCheckedIn(): void + public function testAccessoryCanBeCheckedIn() { Event::fake([CheckoutableCheckedIn::class]); @@ -38,7 +38,7 @@ final class AccessoryCheckinTest extends TestCase Event::assertDispatched(CheckoutableCheckedIn::class, 1); } - public function testEmailSentToUserIfSettingEnabled(): void + public function testEmailSentToUserIfSettingEnabled() { Notification::fake(); @@ -62,7 +62,7 @@ final class AccessoryCheckinTest extends TestCase ); } - public function testEmailNotSentToUserIfSettingDisabled(): void + public function testEmailNotSentToUserIfSettingDisabled() { Notification::fake(); diff --git a/tests/Feature/Checkins/Ui/AssetCheckinTest.php b/tests/Feature/Checkins/Ui/AssetCheckinTest.php index fde107129..1f6c20903 100644 --- a/tests/Feature/Checkins/Ui/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AssetCheckinTest.php @@ -15,7 +15,7 @@ use Tests\TestCase; final class AssetCheckinTest extends TestCase { - public function testCheckingInAssetRequiresCorrectPermission(): void + public function testCheckingInAssetRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('hardware.checkin.store', [ @@ -24,7 +24,7 @@ final class AssetCheckinTest extends TestCase ->assertForbidden(); } - public function testCannotCheckInAssetThatIsNotCheckedOut(): void + public function testCannotCheckInAssetThatIsNotCheckedOut() { $this->actingAs(User::factory()->checkinAssets()->create()) ->post(route('hardware.checkin.store', ['assetId' => Asset::factory()->create()->id])) @@ -33,7 +33,7 @@ final class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testCannotStoreAssetCheckinThatIsNotCheckedOut(): void + public function testCannotStoreAssetCheckinThatIsNotCheckedOut() { $this->actingAs(User::factory()->checkinAssets()->create()) ->get(route('hardware.checkin.store', ['assetId' => Asset::factory()->create()->id])) @@ -42,7 +42,7 @@ final class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testAssetCanBeCheckedIn(): void + public function testAssetCanBeCheckedIn() { Event::fake([CheckoutableCheckedIn::class]); @@ -85,7 +85,7 @@ final class AssetCheckinTest extends TestCase }, 1); } - public function testLocationIsSetToRTDLocationByDefaultUponCheckin(): void + public function testLocationIsSetToRTDLocationByDefaultUponCheckin() { $rtdLocation = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create([ @@ -99,7 +99,7 @@ final class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->location()->is($rtdLocation)); } - public function testDefaultLocationCanBeUpdatedUponCheckin(): void + public function testDefaultLocationCanBeUpdatedUponCheckin() { $location = Location::factory()->create(); $asset = Asset::factory()->assignedToUser()->create(); @@ -113,7 +113,7 @@ final class AssetCheckinTest extends TestCase $this->assertTrue($asset->refresh()->defaultLoc()->is($location)); } - public function testAssetsLicenseSeatsAreClearedUponCheckin(): void + public function testAssetsLicenseSeatsAreClearedUponCheckin() { $asset = Asset::factory()->assignedToUser()->create(); LicenseSeat::factory()->assignedToUser()->for($asset)->create(); @@ -126,7 +126,7 @@ final class AssetCheckinTest extends TestCase $this->assertNull($asset->refresh()->licenseseats->first()->assigned_to); } - public function testLegacyLocationValuesSetToZeroAreUpdated(): void + public function testLegacyLocationValuesSetToZeroAreUpdated() { $asset = Asset::factory()->canBeInvalidUponCreation()->assignedToUser()->create([ 'rtd_location_id' => 0, @@ -140,7 +140,7 @@ final class AssetCheckinTest extends TestCase $this->assertEquals($asset->location_id, $asset->rtd_location_id); } - public function testPendingCheckoutAcceptancesAreClearedUponCheckin(): void + public function testPendingCheckoutAcceptancesAreClearedUponCheckin() { $asset = Asset::factory()->assignedToUser()->create(); @@ -152,7 +152,7 @@ final class AssetCheckinTest extends TestCase $this->assertFalse($acceptance->exists(), 'Acceptance was not deleted'); } - public function testCheckinTimeAndActionLogNoteCanBeSet(): void + public function testCheckinTimeAndActionLogNoteCanBeSet() { Event::fake([CheckoutableCheckedIn::class]); @@ -170,7 +170,7 @@ final class AssetCheckinTest extends TestCase }, 1); } - public function testAssetCheckinPageIsRedirectedIfModelIsInvalid(): void + public function testAssetCheckinPageIsRedirectedIfModelIsInvalid() { $asset = Asset::factory()->assignedToUser()->create(); @@ -184,7 +184,7 @@ final class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.show',['hardware' => $asset->id])); } - public function testAssetCheckinPagePostIsRedirectedIfModelIsInvalid(): void + public function testAssetCheckinPagePostIsRedirectedIfModelIsInvalid() { $asset = Asset::factory()->assignedToUser()->create(); $asset->model_id = 0; @@ -197,7 +197,7 @@ final class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.show', ['hardware' => $asset->id])); } - public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex() { $asset = Asset::factory()->assignedToUser()->create(); @@ -210,7 +210,7 @@ final class AssetCheckinTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testAssetCheckinPagePostIsRedirectedIfRedirectSelectionIsItem() { $asset = Asset::factory()->assignedToUser()->create(); diff --git a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php index a665d13ff..721c00bf9 100644 --- a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php +++ b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class ComponentCheckinTest extends TestCase { - public function testCheckingInComponentRequiresCorrectPermission(): void + public function testCheckingInComponentRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('components.checkin.store', [ @@ -18,7 +18,7 @@ final class ComponentCheckinTest extends TestCase } - public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsIndex() { $component = Component::factory()->checkedOutToAsset()->create(); @@ -32,7 +32,7 @@ final class ComponentCheckinTest extends TestCase ->assertRedirect(route('components.index')); } - public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testComponentCheckinPagePostIsRedirectedIfRedirectSelectionIsItem() { $component = Component::factory()->checkedOutToAsset()->create(); diff --git a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php index 248663860..4d93114e0 100644 --- a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php +++ b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class LicenseCheckinTest extends TestCase { - public function testCheckingInLicenseRequiresCorrectPermission(): void + public function testCheckingInLicenseRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('licenses.checkin.save', [ diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index de7c0af6c..99686d898 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -16,7 +16,7 @@ final class AccessoryAcceptanceTest extends TestCase /** * This can be absorbed into a bigger test */ - public function testUsersNameIsIncludedInAccessoryAcceptedNotification(): void + public function testUsersNameIsIncludedInAccessoryAcceptedNotification() { Notification::fake(); @@ -49,7 +49,7 @@ final class AccessoryAcceptanceTest extends TestCase /** * This can be absorbed into a bigger test */ - public function testUsersNameIsIncludedInAccessoryDeclinedNotification(): void + public function testUsersNameIsIncludedInAccessoryDeclinedNotification() { Notification::fake(); @@ -79,7 +79,7 @@ final class AccessoryAcceptanceTest extends TestCase ); } - public function testUserIsNotAbleToAcceptAnAssetAssignedToADifferentUser(): void + public function testUserIsNotAbleToAcceptAnAssetAssignedToADifferentUser() { Notification::fake(); diff --git a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php index 45c119de8..bbebae56b 100644 --- a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php @@ -11,14 +11,14 @@ use Tests\TestCase; final class AccessoryCheckoutTest extends TestCase { - public function testCheckingOutAccessoryRequiresCorrectPermission(): void + public function testCheckingOutAccessoryRequiresCorrectPermission() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.accessories.checkout', Accessory::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutAccessory(): void + public function testValidationWhenCheckingOutAccessory() { $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) ->postJson(route('api.accessories.checkout', Accessory::factory()->create()), [ @@ -27,7 +27,7 @@ final class AccessoryCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAccessoryMustBeAvailableWhenCheckingOut(): void + public function testAccessoryMustBeAvailableWhenCheckingOut() { $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) ->postJson(route('api.accessories.checkout', Accessory::factory()->withoutItemsRemaining()->create()), [ @@ -58,7 +58,7 @@ final class AccessoryCheckoutTest extends TestCase ->json(); } - public function testAccessoryCanBeCheckedOutWithoutQty(): void + public function testAccessoryCanBeCheckedOutWithoutQty() { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -90,7 +90,7 @@ final class AccessoryCheckoutTest extends TestCase ); } - public function testAccessoryCanBeCheckedOutWithQty(): void + public function testAccessoryCanBeCheckedOutWithQty() { $accessory = Accessory::factory()->create(['qty' => 20]); $user = User::factory()->create(); @@ -124,7 +124,7 @@ final class AccessoryCheckoutTest extends TestCase ); } - public function testAccessoryCannotBeCheckedOutToInvalidUser(): void + public function testAccessoryCannotBeCheckedOutToInvalidUser() { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -143,7 +143,7 @@ final class AccessoryCheckoutTest extends TestCase $this->assertFalse($accessory->checkouts()->where('assigned_type', User::class)->where('assigned_to', $user->id)->count() > 0); } - public function testUserSentNotificationUponCheckout(): void + public function testUserSentNotificationUponCheckout() { Notification::fake(); @@ -159,7 +159,7 @@ final class AccessoryCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutAccessoryNotification::class); } - public function testActionLogCreatedUponCheckout(): void + public function testActionLogCreatedUponCheckout() { $accessory = Accessory::factory()->create(); $actor = User::factory()->checkoutAccessories()->create(); diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php index 3ea610d01..8f8d1a9c7 100644 --- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php @@ -21,7 +21,7 @@ final class AssetCheckoutTest extends TestCase Event::fake([CheckoutableCheckedOut::class]); } - public function testCheckingOutAssetRequiresCorrectPermission(): void + public function testCheckingOutAssetRequiresCorrectPermission() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.asset.checkout', Asset::factory()->create()), [ @@ -31,7 +31,7 @@ final class AssetCheckoutTest extends TestCase ->assertForbidden(); } - public function testNonExistentAssetCannotBeCheckedOut(): void + public function testNonExistentAssetCannotBeCheckedOut() { $this->actingAsForApi(User::factory()->checkoutAssets()->create()) ->postJson(route('api.asset.checkout', 1000), [ @@ -41,7 +41,7 @@ final class AssetCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetNotAvailableForCheckoutCannotBeCheckedOut(): void + public function testAssetNotAvailableForCheckoutCannotBeCheckedOut() { $assetAlreadyCheckedOut = Asset::factory()->assignedToUser()->create(); @@ -53,7 +53,7 @@ final class AssetCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testAssetCannotBeCheckedOutToItself(): void + public function testAssetCannotBeCheckedOutToItself() { $asset = Asset::factory()->create(); @@ -65,7 +65,7 @@ final class AssetCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testValidationWhenCheckingOutAsset(): void + public function testValidationWhenCheckingOutAsset() { $this->actingAsForApi(User::factory()->checkoutAssets()->create()) ->postJson(route('api.asset.checkout', Asset::factory()->create()), []) @@ -74,7 +74,7 @@ final class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled(): void + public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled() { $this->markTestIncomplete('This is not implemented'); } @@ -150,7 +150,7 @@ final class AssetCheckoutTest extends TestCase } #[DataProvider('checkoutTargets')] - public function testAssetCanBeCheckedOut($data): void + public function testAssetCanBeCheckedOut($data) { ['checkout_type' => $type, 'target' => $target, 'expected_location' => $expectedLocation] = $data(); @@ -192,12 +192,12 @@ final class AssetCheckoutTest extends TestCase }); } - public function testLicenseSeatsAreAssignedToUserUponCheckout(): void + public function testLicenseSeatsAreAssignedToUserUponCheckout() { $this->markTestIncomplete('This is not implemented'); } - public function testLastCheckoutUsesCurrentDateIfNotProvided(): void + public function testLastCheckoutUsesCurrentDateIfNotProvided() { $asset = Asset::factory()->create(['last_checkout' => now()->subMonth()]); diff --git a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php index 398f61823..915fba056 100644 --- a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php @@ -11,14 +11,14 @@ use Tests\TestCase; final class ConsumableCheckoutTest extends TestCase { - public function testCheckingOutConsumableRequiresCorrectPermission(): void + public function testCheckingOutConsumableRequiresCorrectPermission() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.consumables.checkout', Consumable::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutConsumable(): void + public function testValidationWhenCheckingOutConsumable() { $this->actingAsForApi(User::factory()->checkoutConsumables()->create()) ->postJson(route('api.consumables.checkout', Consumable::factory()->create()), [ @@ -27,7 +27,7 @@ final class ConsumableCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testConsumableMustBeAvailableWhenCheckingOut(): void + public function testConsumableMustBeAvailableWhenCheckingOut() { $this->actingAsForApi(User::factory()->checkoutConsumables()->create()) ->postJson(route('api.consumables.checkout', Consumable::factory()->withoutItemsRemaining()->create()), [ @@ -36,7 +36,7 @@ final class ConsumableCheckoutTest extends TestCase ->assertStatusMessageIs('error'); } - public function testConsumableCanBeCheckedOut(): void + public function testConsumableCanBeCheckedOut() { $consumable = Consumable::factory()->create(); $user = User::factory()->create(); @@ -49,7 +49,7 @@ final class ConsumableCheckoutTest extends TestCase $this->assertTrue($user->consumables->contains($consumable)); } - public function testUserSentNotificationUponCheckout(): void + public function testUserSentNotificationUponCheckout() { Notification::fake(); @@ -65,7 +65,7 @@ final class ConsumableCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutConsumableNotification::class); } - public function testActionLogCreatedUponCheckout(): void + public function testActionLogCreatedUponCheckout() {$consumable = Consumable::factory()->create(); $actor = User::factory()->checkoutConsumables()->create(); $user = User::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php index 47e057fdf..222802079 100644 --- a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php @@ -13,14 +13,14 @@ use Tests\TestCase; final class AccessoryCheckoutTest extends TestCase { - public function testCheckingOutAccessoryRequiresCorrectPermission(): void + public function testCheckingOutAccessoryRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('accessories.checkout.store', Accessory::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutAccessory(): void + public function testValidationWhenCheckingOutAccessory() { $accessory = Accessory::factory()->create(); $response = $this->actingAs(User::factory()->superuser()->create()) @@ -35,7 +35,7 @@ final class AccessoryCheckoutTest extends TestCase $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testAccessoryMustHaveAvailableItemsForCheckoutWhenCheckingOut(): void + public function testAccessoryMustHaveAvailableItemsForCheckoutWhenCheckingOut() { $accessory = Accessory::factory()->withoutItemsRemaining()->create(); @@ -52,7 +52,7 @@ final class AccessoryCheckoutTest extends TestCase $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testAccessoryCanBeCheckedOutWithoutQuantity(): void + public function testAccessoryCanBeCheckedOutWithoutQuantity() { $accessory = Accessory::factory()->create(); $user = User::factory()->create(); @@ -76,7 +76,7 @@ final class AccessoryCheckoutTest extends TestCase ]); } - public function testAccessoryCanBeCheckedOutWithQuantity(): void + public function testAccessoryCanBeCheckedOutWithQuantity() { $accessory = Accessory::factory()->create(['qty'=>5]); $user = User::factory()->create(); @@ -102,7 +102,7 @@ final class AccessoryCheckoutTest extends TestCase ]); } - public function testAccessoryCanBeCheckedOutToLocationWithQuantity(): void + public function testAccessoryCanBeCheckedOutToLocationWithQuantity() { $accessory = Accessory::factory()->create(['qty'=>5]); $location = Location::factory()->create(); @@ -128,7 +128,7 @@ final class AccessoryCheckoutTest extends TestCase ]); } - public function testAccessoryCanBeCheckedOutToAssetWithQuantity(): void + public function testAccessoryCanBeCheckedOutToAssetWithQuantity() { $accessory = Accessory::factory()->create(['qty'=>5]); $asset = Asset::factory()->create(); @@ -154,7 +154,7 @@ final class AccessoryCheckoutTest extends TestCase ]); } - public function testUserSentNotificationUponCheckout(): void + public function testUserSentNotificationUponCheckout() { Notification::fake(); @@ -171,7 +171,7 @@ final class AccessoryCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutAccessoryNotification::class); } - public function testActionLogCreatedUponCheckout(): void + public function testActionLogCreatedUponCheckout() { $accessory = Accessory::factory()->create(); $actor = User::factory()->checkoutAccessories()->create(); @@ -200,7 +200,7 @@ final class AccessoryCheckoutTest extends TestCase ); } - public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() { $accessory = Accessory::factory()->create(); @@ -216,7 +216,7 @@ final class AccessoryCheckoutTest extends TestCase ->assertRedirect(route('accessories.index')); } - public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() { $accessory = Accessory::factory()->create(); @@ -233,7 +233,7 @@ final class AccessoryCheckoutTest extends TestCase ->assertRedirect(route('accessories.show', ['accessory' => $accessory->id])); } - public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget(): void + public function testAccessoryCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget() { $user = User::factory()->create(); $accessory = Accessory::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php index 64ddd30cf..21be6e35b 100644 --- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php @@ -24,7 +24,7 @@ final class AssetCheckoutTest extends TestCase Event::fake([CheckoutableCheckedOut::class]); } - public function testCheckingOutAssetRequiresCorrectPermission(): void + public function testCheckingOutAssetRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('hardware.checkout.store', Asset::factory()->create()), [ @@ -34,7 +34,7 @@ final class AssetCheckoutTest extends TestCase ->assertForbidden(); } - public function testNonExistentAssetCannotBeCheckedOut(): void + public function testNonExistentAssetCannotBeCheckedOut() { $this->actingAs(User::factory()->checkoutAssets()->create()) ->post(route('hardware.checkout.store', 1000), [ @@ -48,7 +48,7 @@ final class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testAssetNotAvailableForCheckoutCannotBeCheckedOut(): void + public function testAssetNotAvailableForCheckoutCannotBeCheckedOut() { $assetAlreadyCheckedOut = Asset::factory()->assignedToUser()->create(); @@ -63,7 +63,7 @@ final class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testAssetCannotBeCheckedOutToItself(): void + public function testAssetCannotBeCheckedOutToItself() { $asset = Asset::factory()->create(); @@ -77,7 +77,7 @@ final class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testValidationWhenCheckingOutAsset(): void + public function testValidationWhenCheckingOutAsset() { $this->actingAs(User::factory()->create()) ->post(route('hardware.checkout.store', Asset::factory()->create()), [ @@ -98,7 +98,7 @@ final class AssetCheckoutTest extends TestCase Event::assertNotDispatched(CheckoutableCheckedOut::class); } - public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled(): void + public function testCannotCheckoutAcrossCompaniesWhenFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -169,7 +169,7 @@ final class AssetCheckoutTest extends TestCase } #[DataProvider('checkoutTargets')] - public function testAssetCanBeCheckedOut($data): void + public function testAssetCanBeCheckedOut($data) { ['checkout_type' => $type, 'target' => $target, 'expected_location' => $expectedLocation] = $data(); @@ -207,7 +207,7 @@ final class AssetCheckoutTest extends TestCase }); } - public function testLicenseSeatsAreAssignedToUserUponCheckout(): void + public function testLicenseSeatsAreAssignedToUserUponCheckout() { $asset = Asset::factory()->create(); $seat = LicenseSeat::factory()->assignedToAsset($asset)->create(); @@ -224,7 +224,7 @@ final class AssetCheckoutTest extends TestCase $this->assertTrue($user->fresh()->licenses->contains($seat->license)); } - public function testLastCheckoutUsesCurrentDateIfNotProvided(): void + public function testLastCheckoutUsesCurrentDateIfNotProvided() { $asset = Asset::factory()->create(['last_checkout' => now()->subMonth()]); @@ -239,7 +239,7 @@ final class AssetCheckoutTest extends TestCase $this->assertTrue(Carbon::parse($asset->last_checkout)->diffInSeconds(now()) < 2); } - public function testAssetCheckoutPageIsRedirectedIfModelIsInvalid(): void + public function testAssetCheckoutPageIsRedirectedIfModelIsInvalid() { $asset = Asset::factory()->create(); @@ -253,7 +253,7 @@ final class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.show',['hardware' => $asset->id])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() { $asset = Asset::factory()->create(); @@ -268,7 +268,7 @@ final class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.index')); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() { $asset = Asset::factory()->create(); @@ -284,7 +284,7 @@ final class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.show', ['hardware' => $asset->id])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget(): void + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget() { $user = User::factory()->create(); $asset = Asset::factory()->create(); @@ -301,7 +301,7 @@ final class AssetCheckoutTest extends TestCase ->assertRedirect(route('users.show', ['user' => $user])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget(): void + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget() { $target = Asset::factory()->create(); $asset = Asset::factory()->create(); @@ -318,7 +318,7 @@ final class AssetCheckoutTest extends TestCase ->assertRedirect(route('hardware.show', ['hardware' => $target])); } - public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsLocationTarget(): void + public function testAssetCheckoutPagePostIsRedirectedIfRedirectSelectionIsLocationTarget() { $target = Location::factory()->create(); $asset = Asset::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php index 5f8e8d6f3..ab7938867 100644 --- a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class ComponentsCheckoutTest extends TestCase { - public function testCheckingOutComponentRequiresCorrectPermission(): void + public function testCheckingOutComponentRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('components.checkout.store', [ @@ -18,7 +18,7 @@ final class ComponentsCheckoutTest extends TestCase ->assertForbidden(); } - public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() { $component = Component::factory()->create(); @@ -33,7 +33,7 @@ final class ComponentsCheckoutTest extends TestCase ->assertRedirect(route('components.index')); } - public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() { $component = Component::factory()->create(); @@ -48,7 +48,7 @@ final class ComponentsCheckoutTest extends TestCase ->assertRedirect(route('components.show', ['component' => $component->id])); } - public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget(): void + public function testComponentCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget() { $asset = Asset::factory()->create(); $component = Component::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php index e08d101a0..f85031ccd 100644 --- a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php @@ -13,14 +13,14 @@ use Tests\TestCase; final class ConsumableCheckoutTest extends TestCase { - public function testCheckingOutConsumableRequiresCorrectPermission(): void + public function testCheckingOutConsumableRequiresCorrectPermission() { $this->actingAs(User::factory()->create()) ->post(route('consumables.checkout.store', Consumable::factory()->create())) ->assertForbidden(); } - public function testValidationWhenCheckingOutConsumable(): void + public function testValidationWhenCheckingOutConsumable() { $this->actingAs(User::factory()->checkoutConsumables()->create()) ->post(route('consumables.checkout.store', Consumable::factory()->create()), [ @@ -29,7 +29,7 @@ final class ConsumableCheckoutTest extends TestCase ->assertSessionHas('error'); } - public function testConsumableMustBeAvailableWhenCheckingOut(): void + public function testConsumableMustBeAvailableWhenCheckingOut() { $this->actingAs(User::factory()->checkoutConsumables()->create()) ->post(route('consumables.checkout.store', Consumable::factory()->withoutItemsRemaining()->create()), [ @@ -38,7 +38,7 @@ final class ConsumableCheckoutTest extends TestCase ->assertSessionHas('error'); } - public function testConsumableCanBeCheckedOut(): void + public function testConsumableCanBeCheckedOut() { $consumable = Consumable::factory()->create(); $user = User::factory()->create(); @@ -51,7 +51,7 @@ final class ConsumableCheckoutTest extends TestCase $this->assertTrue($user->consumables->contains($consumable)); } - public function testUserSentNotificationUponCheckout(): void + public function testUserSentNotificationUponCheckout() { Notification::fake(); @@ -66,7 +66,7 @@ final class ConsumableCheckoutTest extends TestCase Notification::assertSentTo($user, CheckoutConsumableNotification::class); } - public function testActionLogCreatedUponCheckout(): void + public function testActionLogCreatedUponCheckout() { $consumable = Consumable::factory()->create(); $actor = User::factory()->checkoutConsumables()->create(); @@ -93,7 +93,7 @@ final class ConsumableCheckoutTest extends TestCase ); } - public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() { $consumable = Consumable::factory()->create(); @@ -108,7 +108,7 @@ final class ConsumableCheckoutTest extends TestCase ->assertRedirect(route('consumables.index')); } - public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() { $consumable = Consumable::factory()->create(); @@ -123,7 +123,7 @@ final class ConsumableCheckoutTest extends TestCase ->assertRedirect(route('consumables.show', ['consumable' => $consumable->id])); } - public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget(): void + public function testConsumableCheckoutPagePostIsRedirectedIfRedirectSelectionIsTarget() { $user = User::factory()->create(); $consumable = Consumable::factory()->create(); diff --git a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php index 6d8cb649a..549819335 100644 --- a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class LicenseCheckoutTest extends TestCase { - public function testNotesAreStoredInActionLogOnCheckoutToAsset(): void + public function testNotesAreStoredInActionLogOnCheckoutToAsset() { $admin = User::factory()->superuser()->create(); $asset = Asset::factory()->create(); @@ -34,7 +34,7 @@ final class LicenseCheckoutTest extends TestCase ]); } - public function testNotesAreStoredInActionLogOnCheckoutToUser(): void + public function testNotesAreStoredInActionLogOnCheckoutToUser() { $admin = User::factory()->superuser()->create(); $licenseSeat = LicenseSeat::factory()->create(); @@ -57,7 +57,7 @@ final class LicenseCheckoutTest extends TestCase ]); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex(): void + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsIndex() { $license = License::factory()->create(); @@ -72,7 +72,7 @@ final class LicenseCheckoutTest extends TestCase ->assertRedirect(route('licenses.index')); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem(): void + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsItem() { $license = License::factory()->create(); @@ -86,7 +86,7 @@ final class LicenseCheckoutTest extends TestCase ->assertRedirect(route('licenses.show', ['license' => $license->id])); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget(): void + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsUserTarget() { $user = User::factory()->create(); $license = License::factory()->create(); @@ -100,7 +100,7 @@ final class LicenseCheckoutTest extends TestCase ->assertStatus(302) ->assertRedirect(route('users.show', ['user' => $user->id])); } - public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget(): void + public function testLicenseCheckoutPagePostIsRedirectedIfRedirectSelectionIsAssetTarget() { $asset = Asset::factory()->create(); $license = License::factory()->create(); diff --git a/tests/Feature/Components/Api/ComponentIndexTest.php b/tests/Feature/Components/Api/ComponentIndexTest.php index df1e91544..a0091f315 100644 --- a/tests/Feature/Components/Api/ComponentIndexTest.php +++ b/tests/Feature/Components/Api/ComponentIndexTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class ComponentIndexTest extends TestCase { - public function testComponentIndexAdheresToCompanyScoping(): void + public function testComponentIndexAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Components/Ui/ComponentIndexTest.php b/tests/Feature/Components/Ui/ComponentIndexTest.php index c0e8422fb..49e062a8e 100644 --- a/tests/Feature/Components/Ui/ComponentIndexTest.php +++ b/tests/Feature/Components/Ui/ComponentIndexTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class ComponentIndexTest extends TestCase { - public function testPermissionRequiredToViewComponentsList(): void + public function testPermissionRequiredToViewComponentsList() { $this->actingAs(User::factory()->create()) ->get(route('components.index')) ->assertForbidden(); } - public function testUserCanListComponents(): void + public function testUserCanListComponents() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('components.index')) diff --git a/tests/Feature/Console/MergeUsersTest.php b/tests/Feature/Console/MergeUsersTest.php index e775e1c4a..e46be18c7 100644 --- a/tests/Feature/Console/MergeUsersTest.php +++ b/tests/Feature/Console/MergeUsersTest.php @@ -13,7 +13,7 @@ use Tests\TestCase; final class MergeUsersTest extends TestCase { - public function testAssetsAreTransferredOnUserMerge(): void + public function testAssetsAreTransferredOnUserMerge() { $user1 = User::factory()->create(['username' => 'user1']); $user_to_merge_into = User::factory()->create(['username' => 'user1@example.com']); diff --git a/tests/Feature/Console/OptimizeTest.php b/tests/Feature/Console/OptimizeTest.php index a6648c363..2dd2ce6c4 100644 --- a/tests/Feature/Console/OptimizeTest.php +++ b/tests/Feature/Console/OptimizeTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; final class OptimizeTest extends TestCase { - public function testOptimizeSucceeds(): void + public function testOptimizeSucceeds() { $this->beforeApplicationDestroyed(function () { $this->artisan('config:clear'); diff --git a/tests/Feature/Consumables/Api/ConsumableIndexTest.php b/tests/Feature/Consumables/Api/ConsumableIndexTest.php index d4d4ca9ff..2ad860165 100644 --- a/tests/Feature/Consumables/Api/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Api/ConsumableIndexTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class ConsumableIndexTest extends TestCase { - public function testConsumableIndexAdheresToCompanyScoping(): void + public function testConsumableIndexAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -55,7 +55,7 @@ final class ConsumableIndexTest extends TestCase ->assertResponseContainsInRows($consumableB); } - public function testConsumableIndexReturnsExpectedSearchResults(): void + public function testConsumableIndexReturnsExpectedSearchResults() { Consumable::factory()->count(10)->create(); Consumable::factory()->count(1)->create(['name' => 'My Test Consumable']); diff --git a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php index c622b820c..a21052f0a 100644 --- a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php +++ b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class ConsumableUpdateTest extends TestCase { - public function testCanUpdateConsumableViaPatchWithoutCategoryType(): void + public function testCanUpdateConsumableViaPatchWithoutCategoryType() { $consumable = Consumable::factory()->create(); @@ -28,7 +28,7 @@ final class ConsumableUpdateTest extends TestCase } - public function testCannotUpdateConsumableViaPatchWithInvalidCategoryType(): void + public function testCannotUpdateConsumableViaPatchWithInvalidCategoryType() { $category = Category::factory()->create(['category_type' => 'asset']); $consumable = Consumable::factory()->create(); diff --git a/tests/Feature/Consumables/Api/ConsumableViewTest.php b/tests/Feature/Consumables/Api/ConsumableViewTest.php index 52bd4e31b..1cc5c26e4 100644 --- a/tests/Feature/Consumables/Api/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Api/ConsumableViewTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class ConsumableViewTest extends TestCase { - public function testConsumableViewAdheresToCompanyScoping(): void + public function testConsumableViewAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php index a14d551d2..ae2ad0611 100644 --- a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class ConsumableIndexTest extends TestCase { - public function testPermissionRequiredToViewConsumablesList(): void + public function testPermissionRequiredToViewConsumablesList() { $this->actingAs(User::factory()->create()) ->get(route('consumables.index')) ->assertForbidden(); } - public function testUserCanListConsumables(): void + public function testUserCanListConsumables() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('consumables.index')) diff --git a/tests/Feature/Consumables/Ui/ConsumableViewTest.php b/tests/Feature/Consumables/Ui/ConsumableViewTest.php index 7e5371207..e80f4342e 100644 --- a/tests/Feature/Consumables/Ui/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableViewTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class ConsumableViewTest extends TestCase { - public function testPermissionRequiredToViewConsumable(): void + public function testPermissionRequiredToViewConsumable() { $consumable = Consumable::factory()->create(); $this->actingAs(User::factory()->create()) @@ -16,7 +16,7 @@ final class ConsumableViewTest extends TestCase ->assertForbidden(); } - public function testUserCanListConsumables(): void + public function testUserCanListConsumables() { $consumable = Consumable::factory()->create(); $this->actingAs(User::factory()->superuser()->create()) diff --git a/tests/Feature/DashboardTest.php b/tests/Feature/DashboardTest.php index c8452763b..a5d60e5ef 100644 --- a/tests/Feature/DashboardTest.php +++ b/tests/Feature/DashboardTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; final class DashboardTest extends TestCase { - public function testUsersWithoutAdminAccessAreRedirected(): void + public function testUsersWithoutAdminAccessAreRedirected() { $this->actingAs(User::factory()->create()) ->get(route('home')) diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php index 5796fd92f..10e7823b2 100644 --- a/tests/Feature/Departments/Api/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -13,7 +13,7 @@ final class CreateDepartmentsTest extends TestCase { - public function testRequiresPermissionToCreateDepartment(): void + public function testRequiresPermissionToCreateDepartment() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.departments.store')) diff --git a/tests/Feature/Departments/Api/DepartmentsIndexTest.php b/tests/Feature/Departments/Api/DepartmentsIndexTest.php index eff7f98a1..6fcf6b008 100644 --- a/tests/Feature/Departments/Api/DepartmentsIndexTest.php +++ b/tests/Feature/Departments/Api/DepartmentsIndexTest.php @@ -10,19 +10,19 @@ use Tests\TestCase; final class DepartmentsIndexTest extends TestCase { - public function testViewingDepartmentIndexRequiresAuthentication(): void + public function testViewingDepartmentIndexRequiresAuthentication() { $this->getJson(route('api.departments.index'))->assertRedirect(); } - public function testViewingDepartmentIndexRequiresPermission(): void + public function testViewingDepartmentIndexRequiresPermission() { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.departments.index')) ->assertForbidden(); } - public function testDepartmentIndexReturnsExpectedDepartments(): void + public function testDepartmentIndexReturnsExpectedDepartments() { Department::factory()->count(3)->create(); @@ -42,7 +42,7 @@ final class DepartmentsIndexTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('rows', 3)->etc()); } - public function testDepartmentIndexAdheresToCompanyScoping(): void + public function testDepartmentIndexAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php index 5e884e6fb..d5d8c4811 100644 --- a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class UpdateDepartmentsTest extends TestCase { - public function testRequiresPermissionToEditDepartment(): void + public function testRequiresPermissionToEditDepartment() { $department = Department::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -18,7 +18,7 @@ final class UpdateDepartmentsTest extends TestCase ->assertForbidden(); } - public function testCanUpdateDepartmentViaPatch(): void + public function testCanUpdateDepartmentViaPatch() { $department = Department::factory()->create(); diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php index ef46fd13a..6d975d5a7 100644 --- a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class CreateDepartmentsTest extends TestCase { - public function testPermissionRequiredToCreateDepartment(): void + public function testPermissionRequiredToCreateDepartment() { $this->actingAs(User::factory()->create()) ->post(route('departments.store'), [ @@ -19,7 +19,7 @@ final class CreateDepartmentsTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateDepartments(): void + public function testUserCanCreateDepartments() { $this->assertFalse(Department::where('name', 'Test Department')->exists()); diff --git a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php index b642124ab..0cd802af4 100644 --- a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class IndexDepartmentsTest extends TestCase { - public function testPermissionRequiredToViewDepartmentsList(): void + public function testPermissionRequiredToViewDepartmentsList() { $this->actingAs(User::factory()->create()) ->get(route('departments.index')) ->assertForbidden(); } - public function testUserCanListDepartments(): void + public function testUserCanListDepartments() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('departments.index')) diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php index a3864e4f2..468176961 100644 --- a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class UpdateDepartmentsTest extends TestCase { - public function testPermissionRequiredToStoreDepartment(): void + public function testPermissionRequiredToStoreDepartment() { $this->actingAs(User::factory()->create()) ->post(route('departments.store'), [ @@ -20,7 +20,7 @@ final class UpdateDepartmentsTest extends TestCase } - public function testUserCanEditDepartments(): void + public function testUserCanEditDepartments() { $department = Department::factory()->create(['name' => 'Test Department']); $this->assertTrue(Department::where('name', 'Test Department')->exists()); diff --git a/tests/Feature/Groups/Api/StoreGroupTest.php b/tests/Feature/Groups/Api/StoreGroupTest.php index df8f42ddf..f48210551 100644 --- a/tests/Feature/Groups/Api/StoreGroupTest.php +++ b/tests/Feature/Groups/Api/StoreGroupTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; final class StoreGroupTest extends TestCase { - public function testStoringGroupRequiresSuperAdminPermission(): void + public function testStoringGroupRequiresSuperAdminPermission() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.groups.store')) ->assertForbidden(); } - public function testCanStoreGroupWithPermissionsPassed(): void + public function testCanStoreGroupWithPermissionsPassed() { $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.groups.store'), [ @@ -37,7 +37,7 @@ final class StoreGroupTest extends TestCase $this->assertEquals('0', $group->decodePermissions()['reports.view']); } - public function testStoringGroupWithoutPermissionPassed(): void + public function testStoringGroupWithoutPermissionPassed() { $superuser = User::factory()->superuser()->create(); $this->actingAsForApi($superuser) @@ -61,7 +61,7 @@ final class StoreGroupTest extends TestCase ->assertOk(); } - public function testStoringGroupWithInvalidPermissionDropsBadPermission(): void + public function testStoringGroupWithInvalidPermissionDropsBadPermission() { $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.groups.store'), [ diff --git a/tests/Feature/Groups/Ui/IndexGroupTest.php b/tests/Feature/Groups/Ui/IndexGroupTest.php index a39766e25..b9010bd30 100644 --- a/tests/Feature/Groups/Ui/IndexGroupTest.php +++ b/tests/Feature/Groups/Ui/IndexGroupTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; final class IndexGroupTest extends TestCase { - public function testPermissionRequiredToViewGroupList(): void + public function testPermissionRequiredToViewGroupList() { $this->actingAs(User::factory()->create()) ->get(route('groups.index')) @@ -16,7 +16,7 @@ final class IndexGroupTest extends TestCase //$this->followRedirects($response)->assertSee('sad-panda.png'); } - public function testUserCanListGroups(): void + public function testUserCanListGroups() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('groups.index')) diff --git a/tests/Feature/Licenses/Api/LicenseIndexTest.php b/tests/Feature/Licenses/Api/LicenseIndexTest.php index 11d81b06f..1b5d933e5 100644 --- a/tests/Feature/Licenses/Api/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Api/LicenseIndexTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class LicenseIndexTest extends TestCase { - public function testLicensesIndexAdheresToCompanyScoping(): void + public function testLicensesIndexAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Feature/Licenses/Ui/CreateLicenseTest.php b/tests/Feature/Licenses/Ui/CreateLicenseTest.php index c302bbf61..dcbe90f22 100644 --- a/tests/Feature/Licenses/Ui/CreateLicenseTest.php +++ b/tests/Feature/Licenses/Ui/CreateLicenseTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; final class CreateLicenseTest extends TestCase { - public function testPermissionRequiredToViewLicense(): void + public function testPermissionRequiredToViewLicense() { $license = License::factory()->create(); $this->actingAs(User::factory()->create()) @@ -21,7 +21,7 @@ final class CreateLicenseTest extends TestCase - public function testLicenseWithoutPurchaseDateFailsValidation(): void + public function testLicenseWithoutPurchaseDateFailsValidation() { $response = $this->actingAs(User::factory()->superuser()->create()) ->from(route('licenses.create')) diff --git a/tests/Feature/Licenses/Ui/LicenseIndexTest.php b/tests/Feature/Licenses/Ui/LicenseIndexTest.php index 381fe9098..ac81ac66d 100644 --- a/tests/Feature/Licenses/Ui/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Ui/LicenseIndexTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class LicenseIndexTest extends TestCase { - public function testPermissionRequiredToViewLicenseList(): void + public function testPermissionRequiredToViewLicenseList() { $this->actingAs(User::factory()->create()) ->get(route('licenses.index')) ->assertForbidden(); } - public function testUserCanListLicenses(): void + public function testUserCanListLicenses() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('licenses.index')) diff --git a/tests/Feature/Licenses/Ui/LicenseViewTest.php b/tests/Feature/Licenses/Ui/LicenseViewTest.php index 1685e58bf..f4b41f2df 100644 --- a/tests/Feature/Licenses/Ui/LicenseViewTest.php +++ b/tests/Feature/Licenses/Ui/LicenseViewTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class LicenseViewTest extends TestCase { - public function testPermissionRequiredToViewLicense(): void + public function testPermissionRequiredToViewLicense() { $license = License::factory()->create(); $this->actingAs(User::factory()->create()) @@ -17,7 +17,7 @@ final class LicenseViewTest extends TestCase ->assertForbidden(); } - public function testLicenseWithPurchaseDateDepreciatesCorrectly(): void + public function testLicenseWithPurchaseDateDepreciatesCorrectly() { $depreciation = Depreciation::factory()->create(['months' => 12]); $license = License::factory()->create(['depreciation_id' => $depreciation->id, 'purchase_date' => '2020-01-01']); diff --git a/tests/Feature/Livewire/CategoryEditFormTest.php b/tests/Feature/Livewire/CategoryEditFormTest.php index 3e75781d1..6b5a32123 100644 --- a/tests/Feature/Livewire/CategoryEditFormTest.php +++ b/tests/Feature/Livewire/CategoryEditFormTest.php @@ -8,12 +8,12 @@ use Tests\TestCase; final class CategoryEditFormTest extends TestCase { - public function testTheComponentCanRender(): void + public function testTheComponentCanRender() { Livewire::test(CategoryEditForm::class)->assertStatus(200); } - public function testSendEmailCheckboxIsCheckedOnLoadWhenSendEmailIsExistingSetting(): void + public function testSendEmailCheckboxIsCheckedOnLoadWhenSendEmailIsExistingSetting() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => true, @@ -22,7 +22,7 @@ final class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckboxIsCheckedOnLoadWhenCategoryEulaSet(): void + public function testSendEmailCheckboxIsCheckedOnLoadWhenCategoryEulaSet() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -31,7 +31,7 @@ final class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckboxIsCheckedOnLoadWhenUsingDefaultEula(): void + public function testSendEmailCheckboxIsCheckedOnLoadWhenUsingDefaultEula() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -40,7 +40,7 @@ final class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckBoxIsUncheckedOnLoadWhenSendEmailIsFalseNoCategoryEulaSetAndNotUsingDefaultEula(): void + public function testSendEmailCheckBoxIsUncheckedOnLoadWhenSendEmailIsFalseNoCategoryEulaSetAndNotUsingDefaultEula() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -49,7 +49,7 @@ final class CategoryEditFormTest extends TestCase ])->assertSet('sendCheckInEmail', false); } - public function testSendEmailCheckboxIsCheckedWhenCategoryEulaEntered(): void + public function testSendEmailCheckboxIsCheckedWhenCategoryEulaEntered() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -59,7 +59,7 @@ final class CategoryEditFormTest extends TestCase ->assertSet('sendCheckInEmail', true); } - public function testSendEmailCheckboxCheckedAndDisabledAndEulaTextDisabledWhenUseDefaultEulaSelected(): void + public function testSendEmailCheckboxCheckedAndDisabledAndEulaTextDisabledWhenUseDefaultEulaSelected() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, @@ -71,7 +71,7 @@ final class CategoryEditFormTest extends TestCase ->assertSet('sendCheckInEmailDisabled', true); } - public function testSendEmailCheckboxEnabledAndSetToOriginalValueWhenNoCategoryEulaAndNotUsingGlobalEula(): void + public function testSendEmailCheckboxEnabledAndSetToOriginalValueWhenNoCategoryEulaAndNotUsingGlobalEula() { Livewire::test(CategoryEditForm::class, [ 'eulaText' => 'Some Content', @@ -94,7 +94,7 @@ final class CategoryEditFormTest extends TestCase ->assertSet('sendCheckInEmailDisabled', false); } - public function testEulaFieldEnabledOnLoadWhenNotUsingDefaultEula(): void + public function testEulaFieldEnabledOnLoadWhenNotUsingDefaultEula() { Livewire::test(CategoryEditForm::class, [ 'sendCheckInEmail' => false, diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php index b114266d4..b084c4207 100644 --- a/tests/Feature/Locations/Api/CreateLocationsTest.php +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; final class CreateLocationsTest extends TestCase { - public function testRequiresPermissionToCreateLocation(): void + public function testRequiresPermissionToCreateLocation() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.departments.store')) ->assertForbidden(); } - public function testCannotCreateNewLocationsWithTheSameName(): void + public function testCannotCreateNewLocationsWithTheSameName() { $location = Location::factory()->create(); $location2 = Location::factory()->create(); @@ -33,7 +33,7 @@ final class CreateLocationsTest extends TestCase } - public function testUserCannotCreateLocationsThatAreTheirOwnParent(): void + public function testUserCannotCreateLocationsThatAreTheirOwnParent() { $location = Location::factory()->create(); diff --git a/tests/Feature/Locations/Api/DeleteLocationsTest.php b/tests/Feature/Locations/Api/DeleteLocationsTest.php index 111fdb1ca..8f0891968 100644 --- a/tests/Feature/Locations/Api/DeleteLocationsTest.php +++ b/tests/Feature/Locations/Api/DeleteLocationsTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class DeleteLocationsTest extends TestCase { - public function testErrorReturnedViaApiIfLocationDoesNotExist(): void + public function testErrorReturnedViaApiIfLocationDoesNotExist() { $this->actingAsForApi(User::factory()->superuser()->create()) ->deleteJson(route('api.users.destroy', 'invalid-id')) @@ -20,7 +20,7 @@ final class DeleteLocationsTest extends TestCase ->json(); } - public function testErrorReturnedViaApiIfLocationIsAlreadyDeleted(): void + public function testErrorReturnedViaApiIfLocationIsAlreadyDeleted() { $location = Location::factory()->deletedLocation()->create(); $this->actingAsForApi(User::factory()->superuser()->create()) @@ -31,7 +31,7 @@ final class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowLocationDeletionViaApiIfStillHasPeople(): void + public function testDisallowLocationDeletionViaApiIfStillHasPeople() { $location = Location::factory()->create(); User::factory()->count(5)->create(['location_id' => $location->id]); @@ -46,7 +46,7 @@ final class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasChildLocations(): void + public function testDisallowUserDeletionViaApiIfStillHasChildLocations() { $parent = Location::factory()->create(); Location::factory()->count(5)->create(['parent_id' => $parent->id]); @@ -60,7 +60,7 @@ final class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasAssetsAssigned(): void + public function testDisallowUserDeletionViaApiIfStillHasAssetsAssigned() { $location = Location::factory()->create(); Asset::factory()->count(5)->assignedToLocation($location)->create(); @@ -75,7 +75,7 @@ final class DeleteLocationsTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasAssetsAsLocation(): void + public function testDisallowUserDeletionViaApiIfStillHasAssetsAsLocation() { $location = Location::factory()->create(); Asset::factory()->count(5)->create(['location_id' => $location->id]); diff --git a/tests/Feature/Locations/Api/IndexLocationsTest.php b/tests/Feature/Locations/Api/IndexLocationsTest.php index 6a1a7474c..3c6309a78 100644 --- a/tests/Feature/Locations/Api/IndexLocationsTest.php +++ b/tests/Feature/Locations/Api/IndexLocationsTest.php @@ -10,19 +10,19 @@ use Tests\TestCase; final class IndexLocationsTest extends TestCase { - public function testViewingLocationIndexRequiresAuthentication(): void + public function testViewingLocationIndexRequiresAuthentication() { $this->getJson(route('api.locations.index'))->assertRedirect(); } - public function testViewingLocationIndexRequiresPermission(): void + public function testViewingLocationIndexRequiresPermission() { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.locations.index')) ->assertForbidden(); } - public function testLocationIndexReturnsExpectedLocations(): void + public function testLocationIndexReturnsExpectedLocations() { Location::factory()->count(3)->create(); diff --git a/tests/Feature/Locations/Api/LocationsForSelectListTest.php b/tests/Feature/Locations/Api/LocationsForSelectListTest.php index 563135ddd..4e20ef3d8 100644 --- a/tests/Feature/Locations/Api/LocationsForSelectListTest.php +++ b/tests/Feature/Locations/Api/LocationsForSelectListTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; final class LocationsForSelectListTest extends TestCase { - public function testGettingLocationListRequiresProperPermission(): void + public function testGettingLocationListRequiresProperPermission() { $this->actingAsForApi(User::factory()->create()) ->getJson(route('api.locations.selectlist')) ->assertForbidden(); } - public function testLocationsReturned(): void + public function testLocationsReturned() { Location::factory()->create(); @@ -35,7 +35,7 @@ final class LocationsForSelectListTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('results', 1)->etc()); } - public function testLocationsAreReturnedWhenUserIsUpdatingTheirProfileAndHasPermissionToUpdateLocation(): void + public function testLocationsAreReturnedWhenUserIsUpdatingTheirProfileAndHasPermissionToUpdateLocation() { $this->actingAsForApi(User::factory()->canEditOwnLocation()->create()) ->withHeader('referer', route('profile')) diff --git a/tests/Feature/Locations/Api/LocationsViewTest.php b/tests/Feature/Locations/Api/LocationsViewTest.php index 270db594e..618bf9c59 100644 --- a/tests/Feature/Locations/Api/LocationsViewTest.php +++ b/tests/Feature/Locations/Api/LocationsViewTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class LocationsViewTest extends TestCase { - public function testViewingLocationRequiresPermission(): void + public function testViewingLocationRequiresPermission() { $location = Location::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -17,7 +17,7 @@ final class LocationsViewTest extends TestCase ->assertForbidden(); } - public function testViewingLocationAssetIndexRequiresPermission(): void + public function testViewingLocationAssetIndexRequiresPermission() { $location = Location::factory()->create(); $this->actingAsForApi(User::factory()->create()) @@ -25,7 +25,7 @@ final class LocationsViewTest extends TestCase ->assertForbidden(); } - public function testViewingLocationAssetIndex(): void + public function testViewingLocationAssetIndex() { $location = Location::factory()->create(); Asset::factory()->count(3)->assignedToLocation($location)->create(); diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php index 6cc52cfc6..ca3856871 100644 --- a/tests/Feature/Locations/Api/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -9,14 +9,14 @@ use Tests\TestCase; final class UpdateLocationsTest extends TestCase { - public function testRequiresPermissionToEditLocation(): void + public function testRequiresPermissionToEditLocation() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.locations.store', Location::factory()->create())) ->assertForbidden(); } - public function testCanUpdateLocationViaPatch(): void + public function testCanUpdateLocationViaPatch() { $location = Location::factory()->create(); diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php index 0994e69e0..ef981d7d1 100644 --- a/tests/Feature/Locations/Ui/CreateLocationsTest.php +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class CreateLocationsTest extends TestCase { - public function testPermissionRequiredToCreateLocation(): void + public function testPermissionRequiredToCreateLocation() { $this->actingAs(User::factory()->create()) ->post(route('locations.store'), [ @@ -19,7 +19,7 @@ final class CreateLocationsTest extends TestCase ->assertForbidden(); } - public function testUserCanCreateLocations(): void + public function testUserCanCreateLocations() { $this->assertFalse(Location::where('name', 'Test Location')->exists()); diff --git a/tests/Feature/Locations/Ui/IndexLocationsTest.php b/tests/Feature/Locations/Ui/IndexLocationsTest.php index cc74cfd91..23574ae0c 100644 --- a/tests/Feature/Locations/Ui/IndexLocationsTest.php +++ b/tests/Feature/Locations/Ui/IndexLocationsTest.php @@ -7,14 +7,14 @@ use Tests\TestCase; final class IndexLocationsTest extends TestCase { - public function testPermissionRequiredToViewLocationsList(): void + public function testPermissionRequiredToViewLocationsList() { $this->actingAs(User::factory()->create()) ->get(route('locations.index')) ->assertForbidden(); } - public function testUserCanListLocations(): void + public function testUserCanListLocations() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('locations.index')) diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php index a93a679b7..0db66a800 100644 --- a/tests/Feature/Locations/Ui/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class UpdateLocationsTest extends TestCase { - public function testPermissionRequiredToStoreLocation(): void + public function testPermissionRequiredToStoreLocation() { $this->actingAs(User::factory()->create()) ->post(route('locations.store'), [ @@ -19,7 +19,7 @@ final class UpdateLocationsTest extends TestCase } - public function testUserCanEditLocations(): void + public function testUserCanEditLocations() { $location = Location::factory()->create(['name' => 'Test Location']); $this->assertTrue(Location::where('name', 'Test Location')->exists()); @@ -36,7 +36,7 @@ final class UpdateLocationsTest extends TestCase $this->assertTrue(Location::where('name', 'Test Location Edited')->exists()); } - public function testUserCannotEditLocationsToMakeThemTheirOwnParent(): void + public function testUserCannotEditLocationsToMakeThemTheirOwnParent() { $location = Location::factory()->create(); diff --git a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php index 253305049..b00472b4e 100644 --- a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php @@ -20,7 +20,7 @@ final class EmailNotificationsUponCheckinTest extends TestCase Notification::fake(); } - public function testCheckInEmailSentToUserIfSettingEnabled(): void + public function testCheckInEmailSentToUserIfSettingEnabled() { $user = User::factory()->create(); $asset = Asset::factory()->assignedToUser($user)->create(); @@ -37,7 +37,7 @@ final class EmailNotificationsUponCheckinTest extends TestCase ); } - public function testCheckInEmailNotSentToUserIfSettingDisabled(): void + public function testCheckInEmailNotSentToUserIfSettingDisabled() { $user = User::factory()->create(); $asset = Asset::factory()->assignedToUser($user)->create(); diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php index b881dd9f1..32aa34770 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php @@ -45,7 +45,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase ]; } - public function testAccessoryCheckinSendsSlackNotificationWhenSettingEnabled(): void + public function testAccessoryCheckinSendsSlackNotificationWhenSettingEnabled() { $this->settings->enableSlackWebhook(); @@ -57,7 +57,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase $this->assertSlackNotificationSent(CheckinAccessoryNotification::class); } - public function testAccessoryCheckinDoesNotSendSlackNotificationWhenSettingDisabled(): void + public function testAccessoryCheckinDoesNotSendSlackNotificationWhenSettingDisabled() { $this->settings->disableSlackWebhook(); @@ -70,7 +70,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('assetCheckInTargets')] - public function testAssetCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void + public function testAssetCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -83,7 +83,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('assetCheckInTargets')] - public function testAssetCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void + public function testAssetCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); @@ -95,7 +95,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase $this->assertNoSlackNotificationSent(CheckinAssetNotification::class); } - public function testComponentCheckinDoesNotSendSlackNotification(): void + public function testComponentCheckinDoesNotSendSlackNotification() { $this->settings->enableSlackWebhook(); @@ -108,7 +108,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('licenseCheckInTargets')] - public function testLicenseCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void + public function testLicenseCheckinSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -121,7 +121,7 @@ final class SlackNotificationsUponCheckinTest extends TestCase } #[DataProvider('licenseCheckInTargets')] - public function testLicenseCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void + public function testLicenseCheckinDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php index dd9633a8a..d6ad65041 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php @@ -47,7 +47,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase ]; } - public function testAccessoryCheckoutSendsSlackNotificationWhenSettingEnabled(): void + public function testAccessoryCheckoutSendsSlackNotificationWhenSettingEnabled() { $this->settings->enableSlackWebhook(); @@ -59,7 +59,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase $this->assertSlackNotificationSent(CheckoutAccessoryNotification::class); } - public function testAccessoryCheckoutDoesNotSendSlackNotificationWhenSettingDisabled(): void + public function testAccessoryCheckoutDoesNotSendSlackNotificationWhenSettingDisabled() { $this->settings->disableSlackWebhook(); @@ -72,7 +72,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('assetCheckoutTargets')] - public function testAssetCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void + public function testAssetCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -85,7 +85,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('assetCheckoutTargets')] - public function testAssetCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void + public function testAssetCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); @@ -97,7 +97,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase $this->assertNoSlackNotificationSent(CheckoutAssetNotification::class); } - public function testComponentCheckoutDoesNotSendSlackNotification(): void + public function testComponentCheckoutDoesNotSendSlackNotification() { $this->settings->enableSlackWebhook(); @@ -109,7 +109,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase Notification::assertNothingSent(); } - public function testConsumableCheckoutSendsSlackNotificationWhenSettingEnabled(): void + public function testConsumableCheckoutSendsSlackNotificationWhenSettingEnabled() { $this->settings->enableSlackWebhook(); @@ -121,7 +121,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase $this->assertSlackNotificationSent(CheckoutConsumableNotification::class); } - public function testConsumableCheckoutDoesNotSendSlackNotificationWhenSettingDisabled(): void + public function testConsumableCheckoutDoesNotSendSlackNotificationWhenSettingDisabled() { $this->settings->disableSlackWebhook(); @@ -134,7 +134,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('licenseCheckoutTargets')] - public function testLicenseCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget): void + public function testLicenseCheckoutSendsSlackNotificationWhenSettingEnabled($checkoutTarget) { $this->settings->enableSlackWebhook(); @@ -147,7 +147,7 @@ final class SlackNotificationsUponCheckoutTest extends TestCase } #[DataProvider('licenseCheckoutTargets')] - public function testLicenseCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget): void + public function testLicenseCheckoutDoesNotSendSlackNotificationWhenSettingDisabled($checkoutTarget) { $this->settings->disableSlackWebhook(); diff --git a/tests/Feature/Reporting/CustomReportTest.php b/tests/Feature/Reporting/CustomReportTest.php index ce2053c16..89dcafa2c 100644 --- a/tests/Feature/Reporting/CustomReportTest.php +++ b/tests/Feature/Reporting/CustomReportTest.php @@ -43,7 +43,7 @@ final class CustomReportTest extends TestCase ); } - public function testCustomAssetReport(): void + public function testCustomAssetReport() { Asset::factory()->create(['name' => 'Asset A']); Asset::factory()->create(['name' => 'Asset B']); @@ -59,7 +59,7 @@ final class CustomReportTest extends TestCase ->assertSeeTextInStreamedResponse('Asset B'); } - public function testCustomAssetReportAdheresToCompanyScoping(): void + public function testCustomAssetReportAdheresToCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -105,7 +105,7 @@ final class CustomReportTest extends TestCase ->assertSeeTextInStreamedResponse('Asset B'); } - public function testCanLimitAssetsByLastCheckIn(): void + public function testCanLimitAssetsByLastCheckIn() { Asset::factory()->create(['name' => 'Asset A', 'last_checkin' => '2023-08-01']); Asset::factory()->create(['name' => 'Asset B', 'last_checkin' => '2023-08-02']); diff --git a/tests/Feature/Reporting/UnacceptedAssetReportTest.php b/tests/Feature/Reporting/UnacceptedAssetReportTest.php index c987e8276..90ef96bc8 100644 --- a/tests/Feature/Reporting/UnacceptedAssetReportTest.php +++ b/tests/Feature/Reporting/UnacceptedAssetReportTest.php @@ -44,14 +44,14 @@ final class UnacceptedAssetReportTest extends TestCase } - public function testPermissionRequiredToViewUnacceptedAssetReport(): void + public function testPermissionRequiredToViewUnacceptedAssetReport() { $this->actingAs(User::factory()->create()) ->get(route('reports/unaccepted_assets')) ->assertForbidden(); } - public function testUserCanListUnacceptedAssets(): void + public function testUserCanListUnacceptedAssets() { $this->actingAs(User::factory()->superuser()->create()) ->get(route('reports/unaccepted_assets')) diff --git a/tests/Feature/Settings/BrandingSettingsTest.php b/tests/Feature/Settings/BrandingSettingsTest.php index 4262b63e5..1543bdce9 100644 --- a/tests/Feature/Settings/BrandingSettingsTest.php +++ b/tests/Feature/Settings/BrandingSettingsTest.php @@ -12,7 +12,7 @@ use App\Models\Setting; final class BrandingSettingsTest extends TestCase { - public function testSiteNameIsRequired(): void + public function testSiteNameIsRequired() { $response = $this->actingAs(User::factory()->superuser()->create()) ->from(route('settings.branding.index')) @@ -25,7 +25,7 @@ final class BrandingSettingsTest extends TestCase $this->followRedirects($response)->assertSee(trans('general.error')); } - public function testSiteNameCanBeSaved(): void + public function testSiteNameCanBeSaved() { $response = $this->actingAs(User::factory()->superuser()->create()) ->post(route('settings.branding.save', ['site_name' => 'My Awesome Site'])) @@ -38,7 +38,7 @@ final class BrandingSettingsTest extends TestCase } - public function testLogoCanBeUploaded(): void + public function testLogoCanBeUploaded() { Storage::fake('public'); $setting = Setting::factory()->create(['logo' => null]); @@ -58,7 +58,7 @@ final class BrandingSettingsTest extends TestCase Storage::disk('public')->assertExists($setting->logo); } - public function testLogoCanBeDeleted(): void + public function testLogoCanBeDeleted() { Storage::fake('public'); @@ -82,7 +82,7 @@ final class BrandingSettingsTest extends TestCase //Storage::disk('public')->assertMissing($original_file); } - public function testEmailLogoCanBeUploaded(): void + public function testEmailLogoCanBeUploaded() { Storage::fake('public'); @@ -108,7 +108,7 @@ final class BrandingSettingsTest extends TestCase // Storage::disk('public')->assertMissing($original_file); } - public function testEmailLogoCanBeDeleted(): void + public function testEmailLogoCanBeDeleted() { Storage::fake('public'); @@ -135,7 +135,7 @@ final class BrandingSettingsTest extends TestCase } - public function testLabelLogoCanBeUploaded(): void + public function testLabelLogoCanBeUploaded() { Storage::fake('public'); @@ -164,7 +164,7 @@ final class BrandingSettingsTest extends TestCase } - public function testLabelLogoCanBeDeleted(): void + public function testLabelLogoCanBeDeleted() { Storage::fake('public'); @@ -191,7 +191,7 @@ final class BrandingSettingsTest extends TestCase } - public function testDefaultAvatarCanBeUploaded(): void + public function testDefaultAvatarCanBeUploaded() { Storage::fake('public'); @@ -213,7 +213,7 @@ final class BrandingSettingsTest extends TestCase // Storage::disk('public')->assertMissing($original_file); } - public function testDefaultAvatarCanBeDeleted(): void + public function testDefaultAvatarCanBeDeleted() { Storage::fake('public'); @@ -238,7 +238,7 @@ final class BrandingSettingsTest extends TestCase // Storage::disk('public')->assertMissing($original_file); } - public function testSnipeDefaultAvatarCanBeDeleted(): void + public function testSnipeDefaultAvatarCanBeDeleted() { $setting = Setting::getSettings()->first(); @@ -263,7 +263,7 @@ final class BrandingSettingsTest extends TestCase } - public function testFaviconCanBeUploaded(): void + public function testFaviconCanBeUploaded() { $this->markTestIncomplete('This fails mimetype validation on the mock'); Storage::fake('public'); @@ -284,7 +284,7 @@ final class BrandingSettingsTest extends TestCase Storage::disk('public')->assertExists('favicon.png'); } - public function testFaviconCanBeDeleted(): void + public function testFaviconCanBeDeleted() { $this->markTestIncomplete('This fails mimetype validation on the mock'); Storage::fake('public'); diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php index 511b31fe4..83b0a1e3f 100644 --- a/tests/Feature/Settings/ShowSetUpPageTest.php +++ b/tests/Feature/Settings/ShowSetUpPageTest.php @@ -302,7 +302,7 @@ final class ShowSetUpPageTest extends TestCase $this->assertSeeDirectoryPermissionError(false); } - public function testInvalidTLSCertsOkWhenCheckingForEnvFile(): void + public function testInvalidTLSCertsOkWhenCheckingForEnvFile() { //set the weird bad SSL cert place - https://self-signed.badssl.com $this->markTestIncomplete("Not yet sure how to write this test, it requires messing with .env ..."); diff --git a/tests/Feature/Users/Api/DeleteUserTest.php b/tests/Feature/Users/Api/DeleteUserTest.php index 070a40092..2c134ccc6 100644 --- a/tests/Feature/Users/Api/DeleteUserTest.php +++ b/tests/Feature/Users/Api/DeleteUserTest.php @@ -12,7 +12,7 @@ final class DeleteUserTest extends TestCase { - public function testErrorReturnedViaApiIfUserDoesNotExist(): void + public function testErrorReturnedViaApiIfUserDoesNotExist() { $this->actingAsForApi(User::factory()->deleteUsers()->create()) ->deleteJson(route('api.users.destroy', 'invalid-id')) @@ -22,7 +22,7 @@ final class DeleteUserTest extends TestCase ->json(); } - public function testErrorReturnedViaApiIfUserIsAlreadyDeleted(): void + public function testErrorReturnedViaApiIfUserIsAlreadyDeleted() { $user = User::factory()->deletedUser()->create(); $this->actingAsForApi(User::factory()->deleteUsers()->create()) @@ -34,7 +34,7 @@ final class DeleteUserTest extends TestCase } - public function testDisallowUserDeletionViaApiIfStillManagingPeople(): void + public function testDisallowUserDeletionViaApiIfStillManagingPeople() { $manager = User::factory()->create(); User::factory()->count(5)->create(['manager_id' => $manager->id]); @@ -48,7 +48,7 @@ final class DeleteUserTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillManagingLocations(): void + public function testDisallowUserDeletionViaApiIfStillManagingLocations() { $manager = User::factory()->create(); Location::factory()->count(5)->create(['manager_id' => $manager->id]); @@ -63,7 +63,7 @@ final class DeleteUserTest extends TestCase ->json(); } - public function testDisallowUserDeletionViaApiIfStillHasLicenses(): void + public function testDisallowUserDeletionViaApiIfStillHasLicenses() { $manager = User::factory()->create(); LicenseSeat::factory()->count(5)->create(['assigned_to' => $manager->id]); @@ -78,7 +78,7 @@ final class DeleteUserTest extends TestCase ->json(); } - public function testDeniedPermissionsForDeletingUserViaApi(): void + public function testDeniedPermissionsForDeletingUserViaApi() { $this->actingAsForApi(User::factory()->create()) ->deleteJson(route('api.users.destroy', User::factory()->create())) @@ -86,7 +86,7 @@ final class DeleteUserTest extends TestCase ->json(); } - public function testSuccessPermissionsForDeletingUserViaApi(): void + public function testSuccessPermissionsForDeletingUserViaApi() { $this->actingAsForApi(User::factory()->deleteUsers()->create()) ->deleteJson(route('api.users.destroy', User::factory()->create())) @@ -97,7 +97,7 @@ final class DeleteUserTest extends TestCase } - public function testPermissionsForDeletingIfNotInSameCompanyAndNotSuperadmin(): void + public function testPermissionsForDeletingIfNotInSameCompanyAndNotSuperadmin() { $this->settings->enableMultipleFullCompanySupport(); @@ -139,7 +139,7 @@ final class DeleteUserTest extends TestCase } - public function testUsersCannotDeleteThemselves(): void + public function testUsersCannotDeleteThemselves() { $user = User::factory()->deleteUsers()->create(); $this->actingAsForApi($user) diff --git a/tests/Feature/Users/Api/RestoreUserTest.php b/tests/Feature/Users/Api/RestoreUserTest.php index 11c5e33d0..709c2ac0f 100644 --- a/tests/Feature/Users/Api/RestoreUserTest.php +++ b/tests/Feature/Users/Api/RestoreUserTest.php @@ -12,7 +12,7 @@ final class RestoreUserTest extends TestCase { - public function testErrorReturnedViaApiIfUserDoesNotExist(): void + public function testErrorReturnedViaApiIfUserDoesNotExist() { $this->actingAsForApi(User::factory()->deleteUsers()->create()) ->postJson(route('api.users.restore', 'invalid-id')) @@ -22,7 +22,7 @@ final class RestoreUserTest extends TestCase ->json(); } - public function testErrorReturnedViaApiIfUserIsNotDeleted(): void + public function testErrorReturnedViaApiIfUserIsNotDeleted() { $user = User::factory()->create(); $this->actingAsForApi(User::factory()->deleteUsers()->create()) @@ -34,7 +34,7 @@ final class RestoreUserTest extends TestCase } - public function testDeniedPermissionsForRestoringUserViaApi(): void + public function testDeniedPermissionsForRestoringUserViaApi() { $this->actingAsForApi(User::factory()->create()) ->postJson(route('api.users.restore', User::factory()->deletedUser()->create())) @@ -42,7 +42,7 @@ final class RestoreUserTest extends TestCase ->json(); } - public function testSuccessPermissionsForRestoringUserViaApi(): void + public function testSuccessPermissionsForRestoringUserViaApi() { $deleted_user = User::factory()->deletedUser()->create(); @@ -57,7 +57,7 @@ final class RestoreUserTest extends TestCase $this->assertNull($deleted_user->deleted_at); } - public function testPermissionsForRestoringIfNotInSameCompanyAndNotSuperadmin(): void + public function testPermissionsForRestoringIfNotInSameCompanyAndNotSuperadmin() { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Feature/Users/Api/UpdateUserTest.php b/tests/Feature/Users/Api/UpdateUserTest.php index de6cf116a..918d7f088 100644 --- a/tests/Feature/Users/Api/UpdateUserTest.php +++ b/tests/Feature/Users/Api/UpdateUserTest.php @@ -12,7 +12,7 @@ use Tests\TestCase; final class UpdateUserTest extends TestCase { - public function testCanUpdateUserViaPatch(): void + public function testCanUpdateUserViaPatch() { $admin = User::factory()->superuser()->create(); $manager = User::factory()->create(); @@ -82,7 +82,7 @@ final class UpdateUserTest extends TestCase $this->assertTrue($user->groups->contains($groupB), 'Not part of expected group'); } - public function testApiUsersCanBeActivatedWithNumber(): void + public function testApiUsersCanBeActivatedWithNumber() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => 0]); @@ -95,7 +95,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testApiUsersCanBeActivatedWithBooleanTrue(): void + public function testApiUsersCanBeActivatedWithBooleanTrue() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => false]); @@ -108,7 +108,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testApiUsersCanBeDeactivatedWithNumber(): void + public function testApiUsersCanBeDeactivatedWithNumber() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -121,7 +121,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testApiUsersCanBeDeactivatedWithBooleanFalse(): void + public function testApiUsersCanBeDeactivatedWithBooleanFalse() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -134,7 +134,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testUsersScopedToCompanyDuringUpdateWhenMultipleFullCompanySupportEnabled(): void + public function testUsersScopedToCompanyDuringUpdateWhenMultipleFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -223,7 +223,7 @@ final class UpdateUserTest extends TestCase ->json(); } - public function testUserGroupsAreOnlyUpdatedIfAuthenticatedUserIsSuperUser(): void + public function testUserGroupsAreOnlyUpdatedIfAuthenticatedUserIsSuperUser() { $groupToJoin = Group::factory()->create(); @@ -250,7 +250,7 @@ final class UpdateUserTest extends TestCase $this->assertTrue($userToUpdateByToUserBySuperuser->refresh()->groups->contains($groupToJoin)); } - public function testUserGroupsCanBeClearedBySuperUser(): void + public function testUserGroupsCanBeClearedBySuperUser() { $normalUser = User::factory()->editUsers()->create(); $superUser = User::factory()->superuser()->create(); @@ -276,7 +276,7 @@ final class UpdateUserTest extends TestCase $this->assertFalse($anotherUserToUpdate->refresh()->groups->contains($joinedGroup)); } - public function testNonSuperuserCannotUpdateOwnGroups(): void + public function testNonSuperuserCannotUpdateOwnGroups() { $groupToJoin = Group::factory()->create(); $user = User::factory()->editUsers()->create(); @@ -292,7 +292,7 @@ final class UpdateUserTest extends TestCase } - public function testNonSuperuserCannotUpdateGroups(): void + public function testNonSuperuserCannotUpdateGroups() { $user = User::factory()->editUsers()->create(); $group = Group::factory()->create(); @@ -313,7 +313,7 @@ final class UpdateUserTest extends TestCase } - public function testUsersGroupsAreNotClearedIfNoGroupPassedBySuperUser(): void + public function testUsersGroupsAreNotClearedIfNoGroupPassedBySuperUser() { $user = User::factory()->create(); $superUser = User::factory()->superuser()->create(); @@ -327,7 +327,7 @@ final class UpdateUserTest extends TestCase $this->assertTrue($user->refresh()->groups->contains($group)); } - public function testMultipleGroupsUpdateBySuperUser(): void + public function testMultipleGroupsUpdateBySuperUser() { $user = User::factory()->create(); $superUser = User::factory()->superuser()->create(); diff --git a/tests/Feature/Users/Api/UserSearchTest.php b/tests/Feature/Users/Api/UserSearchTest.php index 5dea41aa6..8478171c7 100644 --- a/tests/Feature/Users/Api/UserSearchTest.php +++ b/tests/Feature/Users/Api/UserSearchTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class UserSearchTest extends TestCase { - public function testCanSearchByUserFirstAndLastName(): void + public function testCanSearchByUserFirstAndLastName() { User::factory()->create(['first_name' => 'Luke', 'last_name' => 'Skywalker']); User::factory()->create(['first_name' => 'Darth', 'last_name' => 'Vader']); @@ -24,7 +24,7 @@ final class UserSearchTest extends TestCase $this->assertFalse($results->pluck('name')->contains(fn($text) => str_contains($text, 'Darth'))); } - public function testResultsWhenSearchingForActiveUsers(): void + public function testResultsWhenSearchingForActiveUsers() { User::factory()->create(['first_name' => 'Active', 'last_name' => 'User']); User::factory()->create(['first_name' => 'Deleted', 'last_name' => 'User'])->delete(); @@ -53,7 +53,7 @@ final class UserSearchTest extends TestCase ); } - public function testResultsWhenSearchingForDeletedUsers(): void + public function testResultsWhenSearchingForDeletedUsers() { User::factory()->create(['first_name' => 'Active', 'last_name' => 'User']); User::factory()->create(['first_name' => 'Deleted', 'last_name' => 'User'])->delete(); @@ -82,7 +82,7 @@ final class UserSearchTest extends TestCase ); } - public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled(): void + public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -110,7 +110,7 @@ final class UserSearchTest extends TestCase ); } - public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled(): void + public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -145,7 +145,7 @@ final class UserSearchTest extends TestCase ); } - public function testUsersIndexWhenInvalidSortFieldIsPassed(): void + public function testUsersIndexWhenInvalidSortFieldIsPassed() { $this->markIncompleteIfSqlite('This test is not compatible with SQLite'); diff --git a/tests/Feature/Users/Api/UsersForSelectListTest.php b/tests/Feature/Users/Api/UsersForSelectListTest.php index 2921bc418..237ee57c8 100644 --- a/tests/Feature/Users/Api/UsersForSelectListTest.php +++ b/tests/Feature/Users/Api/UsersForSelectListTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class UsersForSelectListTest extends TestCase { - public function testUsersAreReturned(): void + public function testUsersAreReturned() { $users = User::factory()->superuser()->count(3)->create(); @@ -27,7 +27,7 @@ final class UsersForSelectListTest extends TestCase ->assertJson(fn(AssertableJson $json) => $json->has('results', 3)->etc()); } - public function testUsersCanBeSearchedByFirstAndLastName(): void + public function testUsersCanBeSearchedByFirstAndLastName() { User::factory()->create(['first_name' => 'Luke', 'last_name' => 'Skywalker']); @@ -40,7 +40,7 @@ final class UsersForSelectListTest extends TestCase $this->assertTrue($results->pluck('text')->contains(fn($text) => str_contains($text, 'Luke'))); } - public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled(): void + public function testUsersScopedToCompanyWhenMultipleFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -68,7 +68,7 @@ final class UsersForSelectListTest extends TestCase ); } - public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled(): void + public function testUsersScopedToCompanyDuringSearchWhenMultipleFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Feature/Users/Api/ViewUserTest.php b/tests/Feature/Users/Api/ViewUserTest.php index 738907e5a..325c8ec1f 100644 --- a/tests/Feature/Users/Api/ViewUserTest.php +++ b/tests/Feature/Users/Api/ViewUserTest.php @@ -11,7 +11,7 @@ use Tests\TestCase; final class ViewUserTest extends TestCase { - public function testCanReturnUser(): void + public function testCanReturnUser() { $user = User::factory()->create(); diff --git a/tests/Feature/Users/Ui/DeleteUserTest.php b/tests/Feature/Users/Ui/DeleteUserTest.php index 6dd5d84f7..6d71041d6 100644 --- a/tests/Feature/Users/Ui/DeleteUserTest.php +++ b/tests/Feature/Users/Ui/DeleteUserTest.php @@ -14,7 +14,7 @@ use App\Models\Asset; final class DeleteUserTest extends TestCase { - public function testUserCanDeleteAnotherUser(): void + public function testUserCanDeleteAnotherUser() { $user = User::factory()->deleteUsers()->viewUsers()->create(); $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create())->assertTrue($user->isDeletable()); @@ -28,7 +28,7 @@ final class DeleteUserTest extends TestCase } - public function testErrorReturnedIfUserDoesNotExist(): void + public function testErrorReturnedIfUserDoesNotExist() { $response = $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create()) ->delete(route('users.destroy', ['user' => '40596803548609346'])) @@ -37,7 +37,7 @@ final class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee(trans('alert-danger')); } - public function testErrorReturnedIfUserIsAlreadyDeleted(): void + public function testErrorReturnedIfUserIsAlreadyDeleted() { $user = User::factory()->deletedUser()->viewUsers()->create(); $response = $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create()) @@ -49,7 +49,7 @@ final class DeleteUserTest extends TestCase } - public function testFmcsPermissionsToDeleteUser(): void + public function testFmcsPermissionsToDeleteUser() { $this->settings->enableMultipleFullCompanySupport(); @@ -90,7 +90,7 @@ final class DeleteUserTest extends TestCase } - public function testDisallowUserDeletionIfStillManagingPeople(): void + public function testDisallowUserDeletionIfStillManagingPeople() { $manager = User::factory()->create(); User::factory()->count(1)->create(['manager_id' => $manager->id]); @@ -105,7 +105,7 @@ final class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } - public function testDisallowUserDeletionIfStillManagingLocations(): void + public function testDisallowUserDeletionIfStillManagingLocations() { $manager = User::factory()->create(); Location::factory()->count(2)->create(['manager_id' => $manager->id]); @@ -120,7 +120,7 @@ final class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } - public function testDisallowUserDeletionIfStillHaveAccessories(): void + public function testDisallowUserDeletionIfStillHaveAccessories() { $user = User::factory()->create(); Accessory::factory()->count(3)->checkedOutToUser($user)->create(); @@ -135,7 +135,7 @@ final class DeleteUserTest extends TestCase $this->followRedirects($response)->assertSee('Error'); } - public function testDisallowUserDeletionIfStillHaveLicenses(): void + public function testDisallowUserDeletionIfStillHaveLicenses() { $user = User::factory()->create(); LicenseSeat::factory()->count(4)->create(['assigned_to' => $user->id]); @@ -151,7 +151,7 @@ final class DeleteUserTest extends TestCase } - public function testAllowUserDeletionIfNotManagingLocations(): void + public function testAllowUserDeletionIfNotManagingLocations() { $manager = User::factory()->create(); $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create())->assertTrue($manager->isDeletable()); @@ -165,14 +165,14 @@ final class DeleteUserTest extends TestCase } - public function testDisallowUserDeletionIfNoDeletePermissions(): void + public function testDisallowUserDeletionIfNoDeletePermissions() { $manager = User::factory()->create(); Location::factory()->create(['manager_id' => $manager->id]); $this->actingAs(User::factory()->editUsers()->viewUsers()->create())->assertFalse($manager->isDeletable()); } - public function testDisallowUserDeletionIfTheyStillHaveAssets(): void + public function testDisallowUserDeletionIfTheyStillHaveAssets() { $user = User::factory()->create(); $asset = Asset::factory()->create(); @@ -195,7 +195,7 @@ final class DeleteUserTest extends TestCase } - public function testUsersCannotDeleteThemselves(): void + public function testUsersCannotDeleteThemselves() { $manager = User::factory()->deleteUsers()->viewUsers()->create(); $this->actingAs(User::factory()->deleteUsers()->viewUsers()->create())->assertTrue($manager->isDeletable()); diff --git a/tests/Feature/Users/Ui/MergeUsersTest.php b/tests/Feature/Users/Ui/MergeUsersTest.php index 7877e94fb..2685a72e8 100644 --- a/tests/Feature/Users/Ui/MergeUsersTest.php +++ b/tests/Feature/Users/Ui/MergeUsersTest.php @@ -13,7 +13,7 @@ use Tests\TestCase; final class MergeUsersTest extends TestCase { - public function testAssetsAreTransferredOnUserMerge(): void + public function testAssetsAreTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -39,7 +39,7 @@ final class MergeUsersTest extends TestCase } - public function testLicensesAreTransferredOnUserMerge(): void + public function testLicensesAreTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -67,7 +67,7 @@ final class MergeUsersTest extends TestCase } - public function testAccessoriesTransferredOnUserMerge(): void + public function testAccessoriesTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -95,7 +95,7 @@ final class MergeUsersTest extends TestCase } - public function testConsumablesTransferredOnUserMerge(): void + public function testConsumablesTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -123,7 +123,7 @@ final class MergeUsersTest extends TestCase } - public function testFilesAreTransferredOnUserMerge(): void + public function testFilesAreTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -151,7 +151,7 @@ final class MergeUsersTest extends TestCase } - public function testAcceptancesAreTransferredOnUserMerge(): void + public function testAcceptancesAreTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); @@ -179,7 +179,7 @@ final class MergeUsersTest extends TestCase } - public function testUserUpdateHistoryIsTransferredOnUserMerge(): void + public function testUserUpdateHistoryIsTransferredOnUserMerge() { $user1 = User::factory()->create(); $user2 = User::factory()->create(); diff --git a/tests/Feature/Users/Ui/UpdateUserTest.php b/tests/Feature/Users/Ui/UpdateUserTest.php index 9d8cc04df..89c005b59 100644 --- a/tests/Feature/Users/Ui/UpdateUserTest.php +++ b/tests/Feature/Users/Ui/UpdateUserTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; final class UpdateUserTest extends TestCase { - public function testUsersCanBeActivatedWithNumber(): void + public function testUsersCanBeActivatedWithNumber() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => 0]); @@ -22,7 +22,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testUsersCanBeActivatedWithBooleanTrue(): void + public function testUsersCanBeActivatedWithBooleanTrue() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => false]); @@ -37,7 +37,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(1, $user->refresh()->activated); } - public function testUsersCanBeDeactivatedWithNumber(): void + public function testUsersCanBeDeactivatedWithNumber() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -52,7 +52,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testUsersCanBeDeactivatedWithBooleanFalse(): void + public function testUsersCanBeDeactivatedWithBooleanFalse() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(['activated' => true]); @@ -67,7 +67,7 @@ final class UpdateUserTest extends TestCase $this->assertEquals(0, $user->refresh()->activated); } - public function testUsersUpdatingThemselvesDoNotDeactivateTheirAccount(): void + public function testUsersUpdatingThemselvesDoNotDeactivateTheirAccount() { $admin = User::factory()->superuser()->create(['activated' => true]); diff --git a/tests/Feature/Users/Ui/ViewUserTest.php b/tests/Feature/Users/Ui/ViewUserTest.php index 111e950f2..d28bbb6d3 100644 --- a/tests/Feature/Users/Ui/ViewUserTest.php +++ b/tests/Feature/Users/Ui/ViewUserTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class ViewUserTest extends TestCase { - public function testPermissionsForUserDetailPage(): void + public function testPermissionsForUserDetailPage() { $this->settings->enableMultipleFullCompanySupport(); @@ -29,7 +29,7 @@ final class ViewUserTest extends TestCase ->assertStatus(200); } - public function testPermissionsForPrintAllInventoryPage(): void + public function testPermissionsForPrintAllInventoryPage() { $this->settings->enableMultipleFullCompanySupport(); @@ -52,7 +52,7 @@ final class ViewUserTest extends TestCase ->assertStatus(200); } - public function testUserWithoutCompanyPermissionsCannotSendInventory(): void + public function testUserWithoutCompanyPermissionsCannotSendInventory() { Notification::fake(); diff --git a/tests/Unit/AccessoryTest.php b/tests/Unit/AccessoryTest.php index 98021c509..2ce1b9624 100644 --- a/tests/Unit/AccessoryTest.php +++ b/tests/Unit/AccessoryTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class AccessoryTest extends TestCase { - public function testAnAccessoryBelongsToACompany(): void + public function testAnAccessoryBelongsToACompany() { $accessory = Accessory::factory() ->create( @@ -20,7 +20,7 @@ final class AccessoryTest extends TestCase $this->assertInstanceOf(Company::class, $accessory->company); } - public function testAnAccessoryHasALocation(): void + public function testAnAccessoryHasALocation() { $accessory = Accessory::factory() ->create( @@ -30,7 +30,7 @@ final class AccessoryTest extends TestCase $this->assertInstanceOf(Location::class, $accessory->location); } - public function testAnAccessoryBelongsToACategory(): void + public function testAnAccessoryBelongsToACategory() { $accessory = Accessory::factory()->appleBtKeyboard() ->create( @@ -45,7 +45,7 @@ final class AccessoryTest extends TestCase $this->assertEquals('accessory', $accessory->category->category_type); } - public function testAnAccessoryHasAManufacturer(): void + public function testAnAccessoryHasAManufacturer() { $accessory = Accessory::factory()->appleBtKeyboard()->create( [ diff --git a/tests/Unit/AssetMaintenanceTest.php b/tests/Unit/AssetMaintenanceTest.php index f033ba9b8..50ccaac35 100644 --- a/tests/Unit/AssetMaintenanceTest.php +++ b/tests/Unit/AssetMaintenanceTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; final class AssetMaintenanceTest extends TestCase { - public function testZerosOutWarrantyIfBlank(): void + public function testZerosOutWarrantyIfBlank() { $c = new AssetMaintenance; $c->is_warranty = ''; @@ -15,7 +15,7 @@ final class AssetMaintenanceTest extends TestCase $this->assertTrue($c->is_warranty == 4); } - public function testSetsCostsAppropriately(): void + public function testSetsCostsAppropriately() { $c = new AssetMaintenance(); $c->cost = '0.00'; @@ -26,7 +26,7 @@ final class AssetMaintenanceTest extends TestCase $this->assertTrue($c->cost === 9.5); } - public function testNullsOutNotesIfBlank(): void + public function testNullsOutNotesIfBlank() { $c = new AssetMaintenance; $c->notes = ''; @@ -35,7 +35,7 @@ final class AssetMaintenanceTest extends TestCase $this->assertTrue($c->notes === 'This is a long note'); } - public function testNullsOutCompletionDateIfBlankOrInvalid(): void + public function testNullsOutCompletionDateIfBlankOrInvalid() { $c = new AssetMaintenance; $c->completion_date = ''; diff --git a/tests/Unit/AssetModelTest.php b/tests/Unit/AssetModelTest.php index 9e4f8920f..57ac292f7 100644 --- a/tests/Unit/AssetModelTest.php +++ b/tests/Unit/AssetModelTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class AssetModelTest extends TestCase { - public function testAnAssetModelContainsAssets(): void + public function testAnAssetModelContainsAssets() { $category = Category::factory()->create([ 'category_type' => 'asset' diff --git a/tests/Unit/AssetTest.php b/tests/Unit/AssetTest.php index 34b187660..7ba468ee3 100644 --- a/tests/Unit/AssetTest.php +++ b/tests/Unit/AssetTest.php @@ -10,7 +10,7 @@ use App\Models\Setting; final class AssetTest extends TestCase { - public function testAutoIncrement(): void + public function testAutoIncrement() { $this->settings->enableAutoIncrement(); @@ -22,7 +22,7 @@ final class AssetTest extends TestCase } - public function testAutoIncrementCollision(): void + public function testAutoIncrementCollision() { $this->settings->enableAutoIncrement(); @@ -34,7 +34,7 @@ final class AssetTest extends TestCase $this->assertFalse($b->save()); } - public function testAutoIncrementDouble(): void + public function testAutoIncrementDouble() { // make one asset with the autoincrement *ONE* higher than the next auto-increment // make sure you can then still make another @@ -53,7 +53,7 @@ final class AssetTest extends TestCase $this->assertEquals($c->asset_tag, $final_number); } - public function testAutoIncrementGapAndBackfill(): void + public function testAutoIncrementGapAndBackfill() { // make one asset 3 higher than the next auto-increment // manually make one that's 1 lower than that @@ -82,7 +82,7 @@ final class AssetTest extends TestCase $this->assertEquals($final->asset_tag, $final_result); } - public function testPrefixlessAutoincrementBackfill(): void + public function testPrefixlessAutoincrementBackfill() { // TODO: COPYPASTA FROM above, is there a way to still run this test but not have it be so duplicative? $this->settings->enableAutoIncrement()->set(['auto_increment_prefix' => '']); @@ -109,7 +109,7 @@ final class AssetTest extends TestCase $this->assertEquals($final->asset_tag, $final_result); } - public function testUnzerofilledPrefixlessAutoincrementBackfill(): void + public function testUnzerofilledPrefixlessAutoincrementBackfill() { // TODO: COPYPASTA FROM above (AGAIN), is there a way to still run this test but not have it be so duplicative? $this->settings->enableAutoIncrement()->set(['auto_increment_prefix' => '','zerofill_count' => 0]); @@ -136,7 +136,7 @@ final class AssetTest extends TestCase $this->assertEquals($final->asset_tag, $final_result); } - public function testAutoIncrementBIG(): void + public function testAutoIncrementBIG() { $this->settings->enableAutoIncrement(); @@ -153,7 +153,7 @@ final class AssetTest extends TestCase $this->assertEquals(Setting::getSettings()->next_auto_tag_base, $matches[0] + 1, "Next auto increment number should be the last normally-saved one plus one, but isn't"); } - public function testAutoIncrementAlmostBIG(): void + public function testAutoIncrementAlmostBIG() { // TODO: this looks pretty close to the one above, could we maybe squish them together? $this->settings->enableAutoIncrement(); @@ -170,7 +170,7 @@ final class AssetTest extends TestCase } - public function testWarrantyExpiresAttribute(): void + public function testWarrantyExpiresAttribute() { $asset = Asset::factory() diff --git a/tests/Unit/CategoryTest.php b/tests/Unit/CategoryTest.php index 8e1fe83f8..75e79b0bd 100644 --- a/tests/Unit/CategoryTest.php +++ b/tests/Unit/CategoryTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class CategoryTest extends TestCase { - public function testFailsEmptyValidation(): void + public function testFailsEmptyValidation() { // An Asset requires a name, a qty, and a category_id. $a = Category::create(); @@ -24,7 +24,7 @@ final class CategoryTest extends TestCase } } - public function testACategoryCanHaveAssets(): void + public function testACategoryCanHaveAssets() { $category = Category::factory()->assetDesktopCategory()->create(); diff --git a/tests/Unit/CompanyScopingTest.php b/tests/Unit/CompanyScopingTest.php index a86a767dd..664d6301f 100644 --- a/tests/Unit/CompanyScopingTest.php +++ b/tests/Unit/CompanyScopingTest.php @@ -29,7 +29,7 @@ final class CompanyScopingTest extends TestCase } #[DataProvider('models')] - public function testCompanyScoping($model): void + public function testCompanyScoping($model) { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -69,7 +69,7 @@ final class CompanyScopingTest extends TestCase $this->assertCanSee($modelB); } - public function testAssetMaintenanceCompanyScoping(): void + public function testAssetMaintenanceCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); @@ -109,7 +109,7 @@ final class CompanyScopingTest extends TestCase $this->assertCanSee($assetMaintenanceForCompanyB); } - public function testLicenseSeatCompanyScoping(): void + public function testLicenseSeatCompanyScoping() { [$companyA, $companyB] = Company::factory()->count(2)->create(); diff --git a/tests/Unit/ComponentTest.php b/tests/Unit/ComponentTest.php index 8d411bc7d..d0f960574 100644 --- a/tests/Unit/ComponentTest.php +++ b/tests/Unit/ComponentTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class ComponentTest extends TestCase { - public function testAComponentBelongsToACompany(): void + public function testAComponentBelongsToACompany() { $component = Component::factory() ->create( @@ -20,14 +20,14 @@ final class ComponentTest extends TestCase $this->assertInstanceOf(Company::class, $component->company); } - public function testAComponentHasALocation(): void + public function testAComponentHasALocation() { $component = Component::factory() ->create(['location_id' => Location::factory()->create()->id]); $this->assertInstanceOf(Location::class, $component->location); } - public function testAComponentBelongsToACategory(): void + public function testAComponentBelongsToACategory() { $component = Component::factory()->ramCrucial4() ->create( diff --git a/tests/Unit/CustomFieldTest.php b/tests/Unit/CustomFieldTest.php index 34b8f6575..da4272323 100644 --- a/tests/Unit/CustomFieldTest.php +++ b/tests/Unit/CustomFieldTest.php @@ -10,14 +10,14 @@ use Tests\TestCase; */ final class CustomFieldTest extends TestCase { - public function testFormat(): void + public function testFormat() { $customfield = CustomField::factory()->make(['format' => 'IP']); $this->assertEquals($customfield->getAttributes()['format'], CustomField::PREDEFINED_FORMATS['IP']); //this seems undocumented... $this->assertEquals($customfield->format, 'IP'); } - public function testDbNameAscii(): void + public function testDbNameAscii() { $customfield = new CustomField(); $customfield->name = 'My hovercraft is full of eels'; @@ -26,7 +26,7 @@ final class CustomFieldTest extends TestCase } // Western Europe - public function testDbNameLatin(): void + public function testDbNameLatin() { $customfield = new CustomField(); $customfield->name = 'My hovercraft is full of eels'; @@ -35,7 +35,7 @@ final class CustomFieldTest extends TestCase } // Asian - public function testDbNameChinese(): void + public function testDbNameChinese() { $customfield = new CustomField(); $customfield->name = '我的氣墊船裝滿了鱔魚'; @@ -47,7 +47,7 @@ final class CustomFieldTest extends TestCase } } - public function testDbNameJapanese(): void + public function testDbNameJapanese() { $customfield = new CustomField(); $customfield->name = '私のホバークラフトは鰻でいっぱいです'; @@ -59,7 +59,7 @@ final class CustomFieldTest extends TestCase } } - public function testDbNameKorean(): void + public function testDbNameKorean() { $customfield = new CustomField(); $customfield->name = '내 호버크라프트는 장어로 가득 차 있어요'; @@ -72,7 +72,7 @@ final class CustomFieldTest extends TestCase } // Nordic languages - public function testDbNameNonLatinEuro(): void + public function testDbNameNonLatinEuro() { $customfield = new CustomField(); $customfield->name = 'Mój poduszkowiec jest pełen węgorzy'; @@ -85,7 +85,7 @@ final class CustomFieldTest extends TestCase } // - public function testDbNameTurkish(): void + public function testDbNameTurkish() { $customfield = new CustomField(); $customfield->name = 'Hoverkraftım yılan balığı dolu'; @@ -97,7 +97,7 @@ final class CustomFieldTest extends TestCase } } - public function testDbNameArabic(): void + public function testDbNameArabic() { $customfield = new CustomField(); $customfield->name = 'حَوّامتي مُمْتِلئة بِأَنْقَلَيْسون'; diff --git a/tests/Unit/DepreciationTest.php b/tests/Unit/DepreciationTest.php index 566c29fe1..c622eaa92 100644 --- a/tests/Unit/DepreciationTest.php +++ b/tests/Unit/DepreciationTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class DepreciationTest extends TestCase { - public function testADepreciationHasModels(): void + public function testADepreciationHasModels() { $depreciation = Depreciation::factory()->create(); @@ -26,7 +26,7 @@ final class DepreciationTest extends TestCase $this->assertEquals(5, $depreciation->models->count()); } - public function testADepreciationHasLicenses(): void + public function testADepreciationHasLicenses() { $depreciation = Depreciation::factory()->create(); diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index 82a71fd91..dc06887e7 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -10,17 +10,17 @@ use Tests\TestCase; final class HelperTest extends TestCase { - public function testDefaultChartColorsMethodHandlesHighValues(): void + public function testDefaultChartColorsMethodHandlesHighValues() { $this->assertIsString(Helper::defaultChartColors(1000)); } - public function testDefaultChartColorsMethodHandlesNegativeNumbers(): void + public function testDefaultChartColorsMethodHandlesNegativeNumbers() { $this->assertIsString(Helper::defaultChartColors(-1)); } - public function testParseCurrencyMethod(): void + public function testParseCurrencyMethod() { $this->settings->set(['default_currency' => 'USD']); $this->assertSame(12.34, Helper::ParseCurrency('USD 12.34')); @@ -28,7 +28,7 @@ final class HelperTest extends TestCase $this->settings->set(['digit_separator' => '1.234,56']); $this->assertSame(12.34, Helper::ParseCurrency('12,34')); } - public function testGetRedirectOptionMethod(): void + public function testGetRedirectOptionMethod() { $test_data = [ 'Option target: redirect for user assigned to ' => [ diff --git a/tests/Unit/LdapTest.php b/tests/Unit/LdapTest.php index f93c48be1..3e7b9d75f 100644 --- a/tests/Unit/LdapTest.php +++ b/tests/Unit/LdapTest.php @@ -11,7 +11,7 @@ final class LdapTest extends TestCase { use \phpmock\phpunit\PHPMock; - public function testConnect(): void + public function testConnect() { $this->settings->enableLdap(); @@ -31,14 +31,14 @@ final class LdapTest extends TestCase // with/without ignore cert validation? // test (and mock) ldap_start_tls() ? - public function testBindAdmin(): void + public function testBindAdmin() { $this->settings->enableLdap(); $this->getFunctionMock("App\\Models", "ldap_bind")->expects($this->once())->willReturn(true); $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testBindBad(): void + public function testBindBad() { $this->settings->enableLdap(); $this->getFunctionMock("App\\Models", "ldap_bind")->expects($this->once())->willReturn(false); @@ -49,7 +49,7 @@ final class LdapTest extends TestCase } // other test cases - test donked password? - public function testAnonymousBind(): void + public function testAnonymousBind() { //todo - would be nice to introspect somehow to make sure the right parameters were passed? $this->settings->enableAnonymousLdap(); @@ -57,7 +57,7 @@ final class LdapTest extends TestCase $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testBadAnonymousBind(): void + public function testBadAnonymousBind() { $this->settings->enableAnonymousLdap(); $this->getFunctionMock("App\\Models", "ldap_bind")->expects($this->once())->willReturn(false); @@ -67,7 +67,7 @@ final class LdapTest extends TestCase $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testBadEncryptedPassword(): void + public function testBadEncryptedPassword() { $this->settings->enableBadPasswordLdap(); @@ -75,7 +75,7 @@ final class LdapTest extends TestCase $this->assertNull(Ldap::bindAdminToLdap("dummy")); } - public function testFindAndBind(): void + public function testFindAndBind() { $this->settings->enableLdap(); @@ -105,7 +105,7 @@ final class LdapTest extends TestCase $this->assertEqualsCanonicalizing(["count" =>1,0 =>['sn' => 'Surname','firstname' => 'FirstName']],$results); } - public function testFindAndBindBadPassword(): void + public function testFindAndBindBadPassword() { $this->settings->enableLdap(); @@ -126,7 +126,7 @@ final class LdapTest extends TestCase $this->assertFalse($results); } - public function testFindAndBindCannotFindSelf(): void + public function testFindAndBindCannotFindSelf() { $this->settings->enableLdap(); @@ -147,7 +147,7 @@ final class LdapTest extends TestCase //maybe should do an AD test as well? - public function testFindLdapUsers(): void + public function testFindLdapUsers() { $this->settings->enableLdap(); @@ -170,7 +170,7 @@ final class LdapTest extends TestCase $this->assertEqualsCanonicalizing(["count" => 1], $results); } - public function testFindLdapUsersPaginated(): void + public function testFindLdapUsersPaginated() { $this->settings->enableLdap(); diff --git a/tests/Unit/Listeners/LogListenerTest.php b/tests/Unit/Listeners/LogListenerTest.php index 336188679..f5ab6d139 100644 --- a/tests/Unit/Listeners/LogListenerTest.php +++ b/tests/Unit/Listeners/LogListenerTest.php @@ -10,7 +10,7 @@ use Tests\TestCase; final class LogListenerTest extends TestCase { - public function testLogsEntryOnCheckoutableCheckedOut(): void + public function testLogsEntryOnCheckoutableCheckedOut() { $asset = Asset::factory()->create(); $checkedOutTo = User::factory()->create(); diff --git a/tests/Unit/LocationTest.php b/tests/Unit/LocationTest.php index 1898d3f87..0c5f535b0 100644 --- a/tests/Unit/LocationTest.php +++ b/tests/Unit/LocationTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; final class LocationTest extends TestCase { - public function testPassesIfNotSelfParent(): void + public function testPassesIfNotSelfParent() { $a = Location::factory()->make([ 'name' => 'Test Location', @@ -17,7 +17,7 @@ final class LocationTest extends TestCase $this->assertTrue($a->isValid()); } - public function testFailsIfSelfParent(): void + public function testFailsIfSelfParent() { $a = Location::factory()->make([ 'name' => 'Test Location', diff --git a/tests/Unit/Models/Company/CompanyTest.php b/tests/Unit/Models/Company/CompanyTest.php index 5d5cbd2a6..66836afd7 100644 --- a/tests/Unit/Models/Company/CompanyTest.php +++ b/tests/Unit/Models/Company/CompanyTest.php @@ -7,7 +7,7 @@ use Tests\TestCase; final class CompanyTest extends TestCase { - public function testACompanyCanHaveUsers(): void + public function testACompanyCanHaveUsers() { $company = Company::factory()->create(); $user = User::factory() diff --git a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php index fff572c18..7ef5b9595 100644 --- a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php +++ b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; final class GetIdForCurrentUserTest extends TestCase { - public function testReturnsProvidedValueWhenFullCompanySupportDisabled(): void + public function testReturnsProvidedValueWhenFullCompanySupportDisabled() { $this->settings->disableMultipleFullCompanySupport(); @@ -16,7 +16,7 @@ final class GetIdForCurrentUserTest extends TestCase $this->assertEquals(1000, Company::getIdForCurrentUser(1000)); } - public function testReturnsProvidedValueForSuperUsersWhenFullCompanySupportEnabled(): void + public function testReturnsProvidedValueForSuperUsersWhenFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -24,7 +24,7 @@ final class GetIdForCurrentUserTest extends TestCase $this->assertEquals(2000, Company::getIdForCurrentUser(2000)); } - public function testReturnsNonSuperUsersCompanyIdWhenFullCompanySupportEnabled(): void + public function testReturnsNonSuperUsersCompanyIdWhenFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); @@ -32,7 +32,7 @@ final class GetIdForCurrentUserTest extends TestCase $this->assertEquals(2000, Company::getIdForCurrentUser(1000)); } - public function testReturnsProvidedValueForNonSuperUserWithoutCompanyIdWhenFullCompanySupportEnabled(): void + public function testReturnsProvidedValueForNonSuperUserWithoutCompanyIdWhenFullCompanySupportEnabled() { $this->settings->enableMultipleFullCompanySupport(); diff --git a/tests/Unit/Models/Labels/FieldOptionTest.php b/tests/Unit/Models/Labels/FieldOptionTest.php index 4eb0829cb..45756daec 100644 --- a/tests/Unit/Models/Labels/FieldOptionTest.php +++ b/tests/Unit/Models/Labels/FieldOptionTest.php @@ -9,7 +9,7 @@ use Tests\TestCase; final class FieldOptionTest extends TestCase { - public function testItDisplaysAssignedToProperly(): void + public function testItDisplaysAssignedToProperly() { // "assignedTo" is a "special" value that can be used in the new label engine $fieldOption = FieldOption::fromString('Assigned To=assignedTo'); diff --git a/tests/Unit/NotificationTest.php b/tests/Unit/NotificationTest.php index b636bff7a..dbeaa44ca 100644 --- a/tests/Unit/NotificationTest.php +++ b/tests/Unit/NotificationTest.php @@ -12,7 +12,7 @@ use Tests\TestCase; final class NotificationTest extends TestCase { - public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA(): void + public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA() { $admin = User::factory()->superuser()->create(); $user = User::factory()->create(); diff --git a/tests/Unit/SnipeModelTest.php b/tests/Unit/SnipeModelTest.php index 7a95655ab..3084aba1b 100644 --- a/tests/Unit/SnipeModelTest.php +++ b/tests/Unit/SnipeModelTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; final class SnipeModelTest extends TestCase { - public function testSetsPurchaseDatesAppropriately(): void + public function testSetsPurchaseDatesAppropriately() { $c = new SnipeModel; $c->purchase_date = ''; @@ -15,7 +15,7 @@ final class SnipeModelTest extends TestCase $this->assertTrue($c->purchase_date === '2016-03-25 12:35:50'); } - public function testSetsPurchaseCostsAppropriately(): void + public function testSetsPurchaseCostsAppropriately() { $c = new SnipeModel; $c->purchase_cost = '0.00'; @@ -26,7 +26,7 @@ final class SnipeModelTest extends TestCase $this->assertTrue($c->purchase_cost === 9.5); } - public function testNullsBlankLocationIdsButNotOthers(): void + public function testNullsBlankLocationIdsButNotOthers() { $c = new SnipeModel; $c->location_id = ''; @@ -35,7 +35,7 @@ final class SnipeModelTest extends TestCase $this->assertTrue($c->location_id == 5); } - public function testNullsBlankCategoriesButNotOthers(): void + public function testNullsBlankCategoriesButNotOthers() { $c = new SnipeModel; $c->category_id = ''; @@ -44,7 +44,7 @@ final class SnipeModelTest extends TestCase $this->assertTrue($c->category_id == 1); } - public function testNullsBlankSuppliersButNotOthers(): void + public function testNullsBlankSuppliersButNotOthers() { $c = new SnipeModel; $c->supplier_id = ''; @@ -53,7 +53,7 @@ final class SnipeModelTest extends TestCase $this->assertTrue($c->supplier_id == 4); } - public function testNullsBlankDepreciationsButNotOthers(): void + public function testNullsBlankDepreciationsButNotOthers() { $c = new SnipeModel; $c->depreciation_id = ''; @@ -62,7 +62,7 @@ final class SnipeModelTest extends TestCase $this->assertTrue($c->depreciation_id == 4); } - public function testNullsBlankManufacturersButNotOthers(): void + public function testNullsBlankManufacturersButNotOthers() { $c = new SnipeModel; $c->manufacturer_id = ''; diff --git a/tests/Unit/SnipeTranslatorTest.php b/tests/Unit/SnipeTranslatorTest.php index 6a582d073..c8f10b762 100644 --- a/tests/Unit/SnipeTranslatorTest.php +++ b/tests/Unit/SnipeTranslatorTest.php @@ -11,17 +11,17 @@ final class SnipeTranslatorTest extends TestCase // WARNING: If these translation strings are updated, these tests will start to fail. Update them as appropriate. - public function testBasic(): void + public function testBasic() { $this->assertEquals('This user has admin privileges',trans('general.admin_tooltip',[],'en-US')); } - public function testPortuguese(): void + public function testPortuguese() { $this->assertEquals('Acessório',trans('general.accessory',[],'pt-PT')); } - public function testFallback(): void + public function testFallback() { $this->assertEquals( 'This user has admin privileges', @@ -30,7 +30,7 @@ final class SnipeTranslatorTest extends TestCase ); } - public function testBackupString(): void + public function testBackupString() { $this->assertEquals( 'Ingen sikkerhetskopier ble gjort ennå', @@ -39,7 +39,7 @@ final class SnipeTranslatorTest extends TestCase ); } - public function testBackupFallback(): void + public function testBackupFallback() { $this->assertEquals( 'No backups were made yet', @@ -49,7 +49,7 @@ final class SnipeTranslatorTest extends TestCase } - public function testTransChoiceSingular(): void + public function testTransChoiceSingular() { $this->assertEquals( '1 Consumível', @@ -57,7 +57,7 @@ final class SnipeTranslatorTest extends TestCase ); } - public function testTransChoicePlural(): void + public function testTransChoicePlural() { $this->assertEquals( '2 Consumíveis', @@ -65,7 +65,7 @@ final class SnipeTranslatorTest extends TestCase ); } - public function testTotallyBogusKey(): void + public function testTotallyBogusKey() { $this->assertEquals( 'bogus_key', @@ -74,7 +74,7 @@ final class SnipeTranslatorTest extends TestCase ); } - public function testReplacements(): void { + public function testReplacements() { $this->assertEquals( 'Artigos alocados a Some Name Here', trans('admin/users/general.assets_user',['name' => 'Some Name Here'],'pt-PT'), @@ -82,7 +82,7 @@ final class SnipeTranslatorTest extends TestCase ); } - public function testNonlegacyBackupLocale(): void { + public function testNonlegacyBackupLocale() { //Spatie backup *usually* uses two-character locales, but pt-BR is an exception $this->assertEquals( 'Mensagem de exceção: MESSAGE', diff --git a/tests/Unit/StatuslabelTest.php b/tests/Unit/StatuslabelTest.php index dc57831fa..71e74abab 100644 --- a/tests/Unit/StatuslabelTest.php +++ b/tests/Unit/StatuslabelTest.php @@ -6,37 +6,37 @@ use Tests\TestCase; final class StatuslabelTest extends TestCase { - public function testRTDStatuslabelAdd(): void + public function testRTDStatuslabelAdd() { $statuslabel = Statuslabel::factory()->rtd()->create(); $this->assertModelExists($statuslabel); } - public function testPendingStatuslabelAdd(): void + public function testPendingStatuslabelAdd() { $statuslabel = Statuslabel::factory()->pending()->create(); $this->assertModelExists($statuslabel); } - public function testArchivedStatuslabelAdd(): void + public function testArchivedStatuslabelAdd() { $statuslabel = Statuslabel::factory()->archived()->create(); $this->assertModelExists($statuslabel); } - public function testOutForRepairStatuslabelAdd(): void + public function testOutForRepairStatuslabelAdd() { $statuslabel = Statuslabel::factory()->outForRepair()->create(); $this->assertModelExists($statuslabel); } - public function testBrokenStatuslabelAdd(): void + public function testBrokenStatuslabelAdd() { $statuslabel = Statuslabel::factory()->broken()->create(); $this->assertModelExists($statuslabel); } - public function testLostStatuslabelAdd(): void + public function testLostStatuslabelAdd() { $statuslabel = Statuslabel::factory()->lost()->create(); $this->assertModelExists($statuslabel); diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index 1d32bc83e..1681fac94 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; final class UserTest extends TestCase { - public function testFirstNameSplit(): void + public function testFirstNameSplit() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_firstname = 'Natalia'; @@ -16,7 +16,7 @@ final class UserTest extends TestCase $this->assertEquals($expected_lastname, $user['last_name']); } - public function testFirstName(): void + public function testFirstName() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'natalia'; @@ -24,7 +24,7 @@ final class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testFirstNameDotLastName(): void + public function testFirstNameDotLastName() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'natalia.allanovna-romanova-oshostakova'; @@ -32,7 +32,7 @@ final class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testLastNameFirstInitial(): void + public function testLastNameFirstInitial() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'allanovna-romanova-oshostakovan'; @@ -40,7 +40,7 @@ final class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testFirstInitialLastName(): void + public function testFirstInitialLastName() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'nallanovna-romanova-oshostakova'; @@ -48,7 +48,7 @@ final class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testFirstInitialUnderscoreLastName(): void + public function testFirstInitialUnderscoreLastName() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; $expected_username = 'nallanovna-romanova-oshostakova'; @@ -56,7 +56,7 @@ final class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testSingleName(): void + public function testSingleName() { $fullname = 'Natalia'; $expected_username = 'natalia'; From 3e832e5e941feff7df9b0eeade0c76a6c31420ce Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 13:31:17 -0700 Subject: [PATCH 054/118] Revert "Define test classes as `final`" This reverts commit 95516b0343aa5755a95b330fcf4c5c3ccefedc69. --- tests/Feature/AssetModels/Api/CreateAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Api/IndexAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php | 2 +- tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php | 2 +- tests/Feature/Assets/Api/AssetFilesTest.php | 2 +- tests/Feature/Assets/Api/AssetIndexTest.php | 2 +- tests/Feature/Assets/Api/AssetsForSelectListTest.php | 2 +- tests/Feature/Assets/Api/RequestableAssetTest.php | 2 +- tests/Feature/Assets/Api/StoreAssetTest.php | 2 +- tests/Feature/Assets/Api/UpdateAssetTest.php | 2 +- tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php | 2 +- tests/Feature/Assets/Ui/BulkEditAssetsTest.php | 2 +- tests/Feature/Assets/Ui/CloneAssetTest.php | 2 +- tests/Feature/Assets/Ui/EditAssetTest.php | 2 +- tests/Feature/Categories/Api/CreateCategoriesTest.php | 2 +- tests/Feature/Categories/Api/IndexCategoriesTest.php | 2 +- tests/Feature/Categories/Api/UpdateCategoriesTest.php | 2 +- tests/Feature/Categories/Ui/CreateCategoriesTest.php | 2 +- tests/Feature/Categories/Ui/IndexCategoriesTest.php | 2 +- tests/Feature/Categories/Ui/UpdateCategoriesTest.php | 2 +- tests/Feature/Checkins/Api/AssetCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/AccessoryCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/AssetCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/ComponentCheckinTest.php | 2 +- tests/Feature/Checkins/Ui/LicenseCheckinTest.php | 2 +- .../Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php | 2 +- tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php | 2 +- tests/Feature/Checkouts/Api/AssetCheckoutTest.php | 2 +- tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/AssetCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php | 2 +- tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php | 2 +- tests/Feature/Components/Api/ComponentIndexTest.php | 2 +- tests/Feature/Components/Ui/ComponentIndexTest.php | 2 +- tests/Feature/Console/MergeUsersTest.php | 2 +- tests/Feature/Console/OptimizeTest.php | 2 +- tests/Feature/Consumables/Api/ConsumableIndexTest.php | 2 +- tests/Feature/Consumables/Api/ConsumableUpdateTest.php | 2 +- tests/Feature/Consumables/Api/ConsumableViewTest.php | 2 +- tests/Feature/Consumables/Ui/ConsumableIndexTest.php | 2 +- tests/Feature/Consumables/Ui/ConsumableViewTest.php | 2 +- tests/Feature/DashboardTest.php | 2 +- tests/Feature/Departments/Api/CreateDepartmentsTest.php | 2 +- tests/Feature/Departments/Api/DepartmentsIndexTest.php | 2 +- tests/Feature/Departments/Api/UpdateDepartmentsTest.php | 2 +- tests/Feature/Departments/Ui/CreateDepartmentsTest.php | 2 +- tests/Feature/Departments/Ui/IndexDepartmentsTest.php | 2 +- tests/Feature/Departments/Ui/UpdateDepartmentsTest.php | 2 +- tests/Feature/Groups/Api/StoreGroupTest.php | 2 +- tests/Feature/Groups/Ui/IndexGroupTest.php | 2 +- tests/Feature/Licenses/Api/LicenseIndexTest.php | 2 +- tests/Feature/Licenses/Ui/CreateLicenseTest.php | 2 +- tests/Feature/Licenses/Ui/LicenseIndexTest.php | 2 +- tests/Feature/Licenses/Ui/LicenseViewTest.php | 2 +- tests/Feature/Livewire/CategoryEditFormTest.php | 2 +- tests/Feature/Locations/Api/CreateLocationsTest.php | 2 +- tests/Feature/Locations/Api/DeleteLocationsTest.php | 2 +- tests/Feature/Locations/Api/IndexLocationsTest.php | 2 +- tests/Feature/Locations/Api/LocationsForSelectListTest.php | 2 +- tests/Feature/Locations/Api/LocationsViewTest.php | 2 +- tests/Feature/Locations/Api/UpdateLocationsTest.php | 2 +- tests/Feature/Locations/Ui/CreateLocationsTest.php | 2 +- tests/Feature/Locations/Ui/IndexLocationsTest.php | 2 +- tests/Feature/Locations/Ui/UpdateLocationsTest.php | 2 +- .../Notifications/Email/EmailNotificationsUponCheckinTest.php | 2 +- .../Webhooks/SlackNotificationsUponCheckinTest.php | 2 +- .../Webhooks/SlackNotificationsUponCheckoutTest.php | 2 +- tests/Feature/Reporting/CustomReportTest.php | 2 +- tests/Feature/Reporting/UnacceptedAssetReportTest.php | 2 +- tests/Feature/Settings/BrandingSettingsTest.php | 2 +- tests/Feature/Settings/ShowSetUpPageTest.php | 2 +- tests/Feature/Users/Api/DeleteUserTest.php | 2 +- tests/Feature/Users/Api/RestoreUserTest.php | 2 +- tests/Feature/Users/Api/UpdateUserTest.php | 2 +- tests/Feature/Users/Api/UserSearchTest.php | 2 +- tests/Feature/Users/Api/UsersForSelectListTest.php | 2 +- tests/Feature/Users/Api/ViewUserTest.php | 2 +- tests/Feature/Users/Ui/DeleteUserTest.php | 2 +- tests/Feature/Users/Ui/MergeUsersTest.php | 2 +- tests/Feature/Users/Ui/UpdateUserTest.php | 2 +- tests/Feature/Users/Ui/ViewUserTest.php | 2 +- tests/Unit/AccessoryTest.php | 2 +- tests/Unit/AssetMaintenanceTest.php | 2 +- tests/Unit/AssetModelTest.php | 2 +- tests/Unit/AssetTest.php | 2 +- tests/Unit/CategoryTest.php | 2 +- tests/Unit/CompanyScopingTest.php | 2 +- tests/Unit/ComponentTest.php | 2 +- tests/Unit/CustomFieldTest.php | 2 +- tests/Unit/DepreciationTest.php | 2 +- tests/Unit/Helpers/HelperTest.php | 2 +- tests/Unit/LdapTest.php | 2 +- tests/Unit/Listeners/LogListenerTest.php | 2 +- tests/Unit/LocationTest.php | 2 +- tests/Unit/Models/Company/CompanyTest.php | 2 +- tests/Unit/Models/Company/GetIdForCurrentUserTest.php | 2 +- tests/Unit/Models/Labels/FieldOptionTest.php | 2 +- tests/Unit/NotificationTest.php | 2 +- tests/Unit/SnipeModelTest.php | 2 +- tests/Unit/SnipeTranslatorTest.php | 2 +- tests/Unit/StatuslabelTest.php | 2 +- tests/Unit/UserTest.php | 2 +- 106 files changed, 106 insertions(+), 106 deletions(-) diff --git a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php index cc072505a..a0b1c27b7 100644 --- a/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/CreateAssetModelsTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class CreateAssetModelsTest extends TestCase +class CreateAssetModelsTest extends TestCase { diff --git a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php index 6afa23c93..26e4dd75b 100644 --- a/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/IndexAssetModelsTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class IndexAssetModelsTest extends TestCase +class IndexAssetModelsTest extends TestCase { public function testViewingAssetModelIndexRequiresAuthentication() { diff --git a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php index 16401c385..c5ec21265 100644 --- a/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Api/UpdateAssetModelsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class UpdateAssetModelsTest extends TestCase +class UpdateAssetModelsTest extends TestCase { public function testRequiresPermissionToEditAssetModel() diff --git a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php index 37c5fce39..ef35aa5f6 100644 --- a/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/CreateAssetModelsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class CreateAssetModelsTest extends TestCase +class CreateAssetModelsTest extends TestCase { public function testPermissionRequiredToCreateAssetModel() { diff --git a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php index e2a65ae13..495de30f0 100644 --- a/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/IndexAssetModelsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\AssetModels\Ui; use App\Models\User; use Tests\TestCase; -final class IndexAssetModelsTest extends TestCase +class IndexAssetModelsTest extends TestCase { public function testPermissionRequiredToViewAssetModelList() { diff --git a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php index 3d459413b..423eaad57 100644 --- a/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php +++ b/tests/Feature/AssetModels/Ui/UpdateAssetModelsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class UpdateAssetModelsTest extends TestCase +class UpdateAssetModelsTest extends TestCase { public function testPermissionRequiredToStoreAssetModel() { diff --git a/tests/Feature/Assets/Api/AssetFilesTest.php b/tests/Feature/Assets/Api/AssetFilesTest.php index 136e90aa2..bc5b6043e 100644 --- a/tests/Feature/Assets/Api/AssetFilesTest.php +++ b/tests/Feature/Assets/Api/AssetFilesTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Illuminate\Http\UploadedFile; use Tests\TestCase; -final class AssetFilesTest extends TestCase +class AssetFilesTest extends TestCase { public function testAssetApiAcceptsFileUpload() { diff --git a/tests/Feature/Assets/Api/AssetIndexTest.php b/tests/Feature/Assets/Api/AssetIndexTest.php index 797499137..c4a362d28 100644 --- a/tests/Feature/Assets/Api/AssetIndexTest.php +++ b/tests/Feature/Assets/Api/AssetIndexTest.php @@ -9,7 +9,7 @@ use Carbon\Carbon; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class AssetIndexTest extends TestCase +class AssetIndexTest extends TestCase { public function testAssetApiIndexReturnsExpectedAssets() { diff --git a/tests/Feature/Assets/Api/AssetsForSelectListTest.php b/tests/Feature/Assets/Api/AssetsForSelectListTest.php index a44996f63..de797651e 100644 --- a/tests/Feature/Assets/Api/AssetsForSelectListTest.php +++ b/tests/Feature/Assets/Api/AssetsForSelectListTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -final class AssetsForSelectListTest extends TestCase +class AssetsForSelectListTest extends TestCase { public function testAssetsCanBeSearchedForByAssetTag() { diff --git a/tests/Feature/Assets/Api/RequestableAssetTest.php b/tests/Feature/Assets/Api/RequestableAssetTest.php index 9fc81a5ff..d24913ad6 100644 --- a/tests/Feature/Assets/Api/RequestableAssetTest.php +++ b/tests/Feature/Assets/Api/RequestableAssetTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -final class RequestableAssetTest extends TestCase +class RequestableAssetTest extends TestCase { public function testViewingRequestableAssetsRequiresCorrectPermission() { diff --git a/tests/Feature/Assets/Api/StoreAssetTest.php b/tests/Feature/Assets/Api/StoreAssetTest.php index 437c456a6..a3f598163 100644 --- a/tests/Feature/Assets/Api/StoreAssetTest.php +++ b/tests/Feature/Assets/Api/StoreAssetTest.php @@ -14,7 +14,7 @@ use Illuminate\Support\Facades\Crypt; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class StoreAssetTest extends TestCase +class StoreAssetTest extends TestCase { public function testRequiresPermissionToCreateAsset() { diff --git a/tests/Feature/Assets/Api/UpdateAssetTest.php b/tests/Feature/Assets/Api/UpdateAssetTest.php index f58c26b05..db5893b4d 100644 --- a/tests/Feature/Assets/Api/UpdateAssetTest.php +++ b/tests/Feature/Assets/Api/UpdateAssetTest.php @@ -13,7 +13,7 @@ use App\Models\CustomField; use Illuminate\Support\Facades\Crypt; use Tests\TestCase; -final class UpdateAssetTest extends TestCase +class UpdateAssetTest extends TestCase { public function testThatANonExistentAssetIdReturnsError() { diff --git a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php index 26478d37f..d1375c539 100644 --- a/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkDeleteAssetsTest.php @@ -8,7 +8,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -final class BulkDeleteAssetsTest extends TestCase +class BulkDeleteAssetsTest extends TestCase { public function testUserWithPermissionsCanAccessPage() { diff --git a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php index d4253d4c7..02d39a7b4 100644 --- a/tests/Feature/Assets/Ui/BulkEditAssetsTest.php +++ b/tests/Feature/Assets/Ui/BulkEditAssetsTest.php @@ -12,7 +12,7 @@ use App\Models\User; use Illuminate\Support\Facades\Crypt; use Tests\TestCase; -final class BulkEditAssetsTest extends TestCase +class BulkEditAssetsTest extends TestCase { public function testUserWithPermissionsCanAccessPage() { diff --git a/tests/Feature/Assets/Ui/CloneAssetTest.php b/tests/Feature/Assets/Ui/CloneAssetTest.php index 724727600..18e1ccc5e 100644 --- a/tests/Feature/Assets/Ui/CloneAssetTest.php +++ b/tests/Feature/Assets/Ui/CloneAssetTest.php @@ -6,7 +6,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -final class CloneAssetTest extends TestCase +class CloneAssetTest extends TestCase { public function testPermissionRequiredToCreateAssetModel() { diff --git a/tests/Feature/Assets/Ui/EditAssetTest.php b/tests/Feature/Assets/Ui/EditAssetTest.php index bb2eb8de4..2c19e768b 100644 --- a/tests/Feature/Assets/Ui/EditAssetTest.php +++ b/tests/Feature/Assets/Ui/EditAssetTest.php @@ -8,7 +8,7 @@ use App\Models\StatusLabel; use App\Models\User; use Tests\TestCase; -final class EditAssetTest extends TestCase +class EditAssetTest extends TestCase { public function testPermissionRequiredToViewLicense() diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php index 8c9b47992..fc464242a 100644 --- a/tests/Feature/Categories/Api/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -9,7 +9,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class CreateCategoriesTest extends TestCase +class CreateCategoriesTest extends TestCase { diff --git a/tests/Feature/Categories/Api/IndexCategoriesTest.php b/tests/Feature/Categories/Api/IndexCategoriesTest.php index 139ec1206..d27bfbb06 100644 --- a/tests/Feature/Categories/Api/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Api/IndexCategoriesTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class IndexCategoriesTest extends TestCase +class IndexCategoriesTest extends TestCase { public function testViewingCategoryIndexRequiresPermission() diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php index 8a8923930..1a784c117 100644 --- a/tests/Feature/Categories/Api/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -6,7 +6,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class UpdateCategoriesTest extends TestCase +class UpdateCategoriesTest extends TestCase { public function testCanUpdateCategoryViaPatchWithoutCategoryType() diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php index 4471c7647..87312ad25 100644 --- a/tests/Feature/Categories/Ui/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class CreateCategoriesTest extends TestCase +class CreateCategoriesTest extends TestCase { public function testPermissionRequiredToCreateCategories() { diff --git a/tests/Feature/Categories/Ui/IndexCategoriesTest.php b/tests/Feature/Categories/Ui/IndexCategoriesTest.php index 7f740f332..caacba99a 100644 --- a/tests/Feature/Categories/Ui/IndexCategoriesTest.php +++ b/tests/Feature/Categories/Ui/IndexCategoriesTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Categories\Ui; use App\Models\User; use Tests\TestCase; -final class IndexCategoriesTest extends TestCase +class IndexCategoriesTest extends TestCase { public function testPermissionRequiredToViewCategoryList() { diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php index fd2e47446..98b67c7d3 100644 --- a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -7,7 +7,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -final class UpdateCategoriesTest extends TestCase +class UpdateCategoriesTest extends TestCase { public function testPermissionRequiredToStoreCategory() { diff --git a/tests/Feature/Checkins/Api/AssetCheckinTest.php b/tests/Feature/Checkins/Api/AssetCheckinTest.php index 42f683421..0e041fc73 100644 --- a/tests/Feature/Checkins/Api/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Api/AssetCheckinTest.php @@ -13,7 +13,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -final class AssetCheckinTest extends TestCase +class AssetCheckinTest extends TestCase { public function testCheckingInAssetRequiresCorrectPermission() { diff --git a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php index 9084275d9..7a99b2ab5 100644 --- a/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AccessoryCheckinTest.php @@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class AccessoryCheckinTest extends TestCase +class AccessoryCheckinTest extends TestCase { public function testCheckingInAccessoryRequiresCorrectPermission() { diff --git a/tests/Feature/Checkins/Ui/AssetCheckinTest.php b/tests/Feature/Checkins/Ui/AssetCheckinTest.php index 1f6c20903..f412d4439 100644 --- a/tests/Feature/Checkins/Ui/AssetCheckinTest.php +++ b/tests/Feature/Checkins/Ui/AssetCheckinTest.php @@ -13,7 +13,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -final class AssetCheckinTest extends TestCase +class AssetCheckinTest extends TestCase { public function testCheckingInAssetRequiresCorrectPermission() { diff --git a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php index 721c00bf9..1213d6525 100644 --- a/tests/Feature/Checkins/Ui/ComponentCheckinTest.php +++ b/tests/Feature/Checkins/Ui/ComponentCheckinTest.php @@ -6,7 +6,7 @@ use App\Models\Component; use App\Models\User; use Tests\TestCase; -final class ComponentCheckinTest extends TestCase +class ComponentCheckinTest extends TestCase { public function testCheckingInComponentRequiresCorrectPermission() { diff --git a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php index 4d93114e0..e087cb442 100644 --- a/tests/Feature/Checkins/Ui/LicenseCheckinTest.php +++ b/tests/Feature/Checkins/Ui/LicenseCheckinTest.php @@ -6,7 +6,7 @@ use App\Models\LicenseSeat; use App\Models\User; use Tests\TestCase; -final class LicenseCheckinTest extends TestCase +class LicenseCheckinTest extends TestCase { public function testCheckingInLicenseRequiresCorrectPermission() { diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index 99686d898..fef38623f 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -11,7 +11,7 @@ use App\Notifications\AcceptanceAssetDeclinedNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class AccessoryAcceptanceTest extends TestCase +class AccessoryAcceptanceTest extends TestCase { /** * This can be absorbed into a bigger test diff --git a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php index bbebae56b..2b37797fb 100644 --- a/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AccessoryCheckoutTest.php @@ -9,7 +9,7 @@ use App\Notifications\CheckoutAccessoryNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class AccessoryCheckoutTest extends TestCase +class AccessoryCheckoutTest extends TestCase { public function testCheckingOutAccessoryRequiresCorrectPermission() { diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php index 8f8d1a9c7..ded388964 100644 --- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php @@ -12,7 +12,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -final class AssetCheckoutTest extends TestCase +class AssetCheckoutTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php index 915fba056..3bd0212fd 100644 --- a/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Api/ConsumableCheckoutTest.php @@ -9,7 +9,7 @@ use App\Notifications\CheckoutConsumableNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class ConsumableCheckoutTest extends TestCase +class ConsumableCheckoutTest extends TestCase { public function testCheckingOutConsumableRequiresCorrectPermission() { diff --git a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php index 222802079..d4818ffc4 100644 --- a/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AccessoryCheckoutTest.php @@ -11,7 +11,7 @@ use App\Notifications\CheckoutAccessoryNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class AccessoryCheckoutTest extends TestCase +class AccessoryCheckoutTest extends TestCase { public function testCheckingOutAccessoryRequiresCorrectPermission() { diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php index 21be6e35b..f268a9385 100644 --- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php @@ -15,7 +15,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Event; use Tests\TestCase; -final class AssetCheckoutTest extends TestCase +class AssetCheckoutTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php index ab7938867..da285bebb 100644 --- a/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ComponentsCheckoutTest.php @@ -7,7 +7,7 @@ use App\Models\Component; use App\Models\User; use Tests\TestCase; -final class ComponentsCheckoutTest extends TestCase +class ComponentsCheckoutTest extends TestCase { public function testCheckingOutComponentRequiresCorrectPermission() { diff --git a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php index f85031ccd..90132fced 100644 --- a/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/ConsumableCheckoutTest.php @@ -11,7 +11,7 @@ use App\Notifications\CheckoutConsumableNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class ConsumableCheckoutTest extends TestCase +class ConsumableCheckoutTest extends TestCase { public function testCheckingOutConsumableRequiresCorrectPermission() { diff --git a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php index 549819335..9511c3ae3 100644 --- a/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php +++ b/tests/Feature/Checkouts/Ui/LicenseCheckoutTest.php @@ -8,7 +8,7 @@ use App\Models\LicenseSeat; use App\Models\User; use Tests\TestCase; -final class LicenseCheckoutTest extends TestCase +class LicenseCheckoutTest extends TestCase { public function testNotesAreStoredInActionLogOnCheckoutToAsset() { diff --git a/tests/Feature/Components/Api/ComponentIndexTest.php b/tests/Feature/Components/Api/ComponentIndexTest.php index a0091f315..4260372c0 100644 --- a/tests/Feature/Components/Api/ComponentIndexTest.php +++ b/tests/Feature/Components/Api/ComponentIndexTest.php @@ -7,7 +7,7 @@ use App\Models\Component; use App\Models\User; use Tests\TestCase; -final class ComponentIndexTest extends TestCase +class ComponentIndexTest extends TestCase { public function testComponentIndexAdheresToCompanyScoping() { diff --git a/tests/Feature/Components/Ui/ComponentIndexTest.php b/tests/Feature/Components/Ui/ComponentIndexTest.php index 49e062a8e..41b733e04 100644 --- a/tests/Feature/Components/Ui/ComponentIndexTest.php +++ b/tests/Feature/Components/Ui/ComponentIndexTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Components\Ui; use App\Models\User; use Tests\TestCase; -final class ComponentIndexTest extends TestCase +class ComponentIndexTest extends TestCase { public function testPermissionRequiredToViewComponentsList() { diff --git a/tests/Feature/Console/MergeUsersTest.php b/tests/Feature/Console/MergeUsersTest.php index e46be18c7..4c43e6293 100644 --- a/tests/Feature/Console/MergeUsersTest.php +++ b/tests/Feature/Console/MergeUsersTest.php @@ -11,7 +11,7 @@ use App\Models\Actionlog; use Tests\TestCase; -final class MergeUsersTest extends TestCase +class MergeUsersTest extends TestCase { public function testAssetsAreTransferredOnUserMerge() { diff --git a/tests/Feature/Console/OptimizeTest.php b/tests/Feature/Console/OptimizeTest.php index 2dd2ce6c4..8dd6f270f 100644 --- a/tests/Feature/Console/OptimizeTest.php +++ b/tests/Feature/Console/OptimizeTest.php @@ -4,7 +4,7 @@ namespace Tests\Feature\Console; use Tests\TestCase; -final class OptimizeTest extends TestCase +class OptimizeTest extends TestCase { public function testOptimizeSucceeds() { diff --git a/tests/Feature/Consumables/Api/ConsumableIndexTest.php b/tests/Feature/Consumables/Api/ConsumableIndexTest.php index 2ad860165..f1d3ad7f0 100644 --- a/tests/Feature/Consumables/Api/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Api/ConsumableIndexTest.php @@ -7,7 +7,7 @@ use App\Models\Consumable; use App\Models\User; use Tests\TestCase; -final class ConsumableIndexTest extends TestCase +class ConsumableIndexTest extends TestCase { public function testConsumableIndexAdheresToCompanyScoping() { diff --git a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php index a21052f0a..1c1e05d4d 100644 --- a/tests/Feature/Consumables/Api/ConsumableUpdateTest.php +++ b/tests/Feature/Consumables/Api/ConsumableUpdateTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class ConsumableUpdateTest extends TestCase +class ConsumableUpdateTest extends TestCase { public function testCanUpdateConsumableViaPatchWithoutCategoryType() diff --git a/tests/Feature/Consumables/Api/ConsumableViewTest.php b/tests/Feature/Consumables/Api/ConsumableViewTest.php index 1cc5c26e4..c6410216e 100644 --- a/tests/Feature/Consumables/Api/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Api/ConsumableViewTest.php @@ -7,7 +7,7 @@ use App\Models\Consumable; use App\Models\User; use Tests\TestCase; -final class ConsumableViewTest extends TestCase +class ConsumableViewTest extends TestCase { public function testConsumableViewAdheresToCompanyScoping() { diff --git a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php index ae2ad0611..3c438187c 100644 --- a/tests/Feature/Consumables/Ui/ConsumableIndexTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableIndexTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Consumables\Ui; use App\Models\User; use Tests\TestCase; -final class ConsumableIndexTest extends TestCase +class ConsumableIndexTest extends TestCase { public function testPermissionRequiredToViewConsumablesList() { diff --git a/tests/Feature/Consumables/Ui/ConsumableViewTest.php b/tests/Feature/Consumables/Ui/ConsumableViewTest.php index e80f4342e..9633896c2 100644 --- a/tests/Feature/Consumables/Ui/ConsumableViewTest.php +++ b/tests/Feature/Consumables/Ui/ConsumableViewTest.php @@ -6,7 +6,7 @@ use App\Models\Consumable; use App\Models\User; use Tests\TestCase; -final class ConsumableViewTest extends TestCase +class ConsumableViewTest extends TestCase { public function testPermissionRequiredToViewConsumable() { diff --git a/tests/Feature/DashboardTest.php b/tests/Feature/DashboardTest.php index a5d60e5ef..4690a1390 100644 --- a/tests/Feature/DashboardTest.php +++ b/tests/Feature/DashboardTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature; use App\Models\User; use Tests\TestCase; -final class DashboardTest extends TestCase +class DashboardTest extends TestCase { public function testUsersWithoutAdminAccessAreRedirected() { diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php index 10e7823b2..a8725c5ff 100644 --- a/tests/Feature/Departments/Api/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -9,7 +9,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class CreateDepartmentsTest extends TestCase +class CreateDepartmentsTest extends TestCase { diff --git a/tests/Feature/Departments/Api/DepartmentsIndexTest.php b/tests/Feature/Departments/Api/DepartmentsIndexTest.php index 6fcf6b008..e3616e249 100644 --- a/tests/Feature/Departments/Api/DepartmentsIndexTest.php +++ b/tests/Feature/Departments/Api/DepartmentsIndexTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class DepartmentsIndexTest extends TestCase +class DepartmentsIndexTest extends TestCase { public function testViewingDepartmentIndexRequiresAuthentication() { diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php index d5d8c4811..2a6401e7f 100644 --- a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class UpdateDepartmentsTest extends TestCase +class UpdateDepartmentsTest extends TestCase { public function testRequiresPermissionToEditDepartment() diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php index 6d975d5a7..17045cbc0 100644 --- a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -final class CreateDepartmentsTest extends TestCase +class CreateDepartmentsTest extends TestCase { public function testPermissionRequiredToCreateDepartment() { diff --git a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php index 0cd802af4..461ec8fff 100644 --- a/tests/Feature/Departments/Ui/IndexDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/IndexDepartmentsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Departments\Ui; use App\Models\User; use Tests\TestCase; -final class IndexDepartmentsTest extends TestCase +class IndexDepartmentsTest extends TestCase { public function testPermissionRequiredToViewDepartmentsList() { diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php index 468176961..e6e614d32 100644 --- a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -7,7 +7,7 @@ use App\Models\Category; use App\Models\User; use Tests\TestCase; -final class UpdateDepartmentsTest extends TestCase +class UpdateDepartmentsTest extends TestCase { public function testPermissionRequiredToStoreDepartment() { diff --git a/tests/Feature/Groups/Api/StoreGroupTest.php b/tests/Feature/Groups/Api/StoreGroupTest.php index f48210551..ebcbff71c 100644 --- a/tests/Feature/Groups/Api/StoreGroupTest.php +++ b/tests/Feature/Groups/Api/StoreGroupTest.php @@ -7,7 +7,7 @@ use App\Models\Group; use App\Models\User; use Tests\TestCase; -final class StoreGroupTest extends TestCase +class StoreGroupTest extends TestCase { public function testStoringGroupRequiresSuperAdminPermission() { diff --git a/tests/Feature/Groups/Ui/IndexGroupTest.php b/tests/Feature/Groups/Ui/IndexGroupTest.php index b9010bd30..a2d67f903 100644 --- a/tests/Feature/Groups/Ui/IndexGroupTest.php +++ b/tests/Feature/Groups/Ui/IndexGroupTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Groups\Ui; use App\Models\User; use Tests\TestCase; -final class IndexGroupTest extends TestCase +class IndexGroupTest extends TestCase { public function testPermissionRequiredToViewGroupList() { diff --git a/tests/Feature/Licenses/Api/LicenseIndexTest.php b/tests/Feature/Licenses/Api/LicenseIndexTest.php index 1b5d933e5..1df786427 100644 --- a/tests/Feature/Licenses/Api/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Api/LicenseIndexTest.php @@ -7,7 +7,7 @@ use App\Models\License; use App\Models\User; use Tests\TestCase; -final class LicenseIndexTest extends TestCase +class LicenseIndexTest extends TestCase { public function testLicensesIndexAdheresToCompanyScoping() { diff --git a/tests/Feature/Licenses/Ui/CreateLicenseTest.php b/tests/Feature/Licenses/Ui/CreateLicenseTest.php index dcbe90f22..f24c3bd2c 100644 --- a/tests/Feature/Licenses/Ui/CreateLicenseTest.php +++ b/tests/Feature/Licenses/Ui/CreateLicenseTest.php @@ -9,7 +9,7 @@ use App\Models\Depreciation; use App\Models\User; use Tests\TestCase; -final class CreateLicenseTest extends TestCase +class CreateLicenseTest extends TestCase { public function testPermissionRequiredToViewLicense() { diff --git a/tests/Feature/Licenses/Ui/LicenseIndexTest.php b/tests/Feature/Licenses/Ui/LicenseIndexTest.php index ac81ac66d..3eb33e5ee 100644 --- a/tests/Feature/Licenses/Ui/LicenseIndexTest.php +++ b/tests/Feature/Licenses/Ui/LicenseIndexTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Licenses\Ui; use App\Models\User; use Tests\TestCase; -final class LicenseIndexTest extends TestCase +class LicenseIndexTest extends TestCase { public function testPermissionRequiredToViewLicenseList() { diff --git a/tests/Feature/Licenses/Ui/LicenseViewTest.php b/tests/Feature/Licenses/Ui/LicenseViewTest.php index f4b41f2df..3b1f7830d 100644 --- a/tests/Feature/Licenses/Ui/LicenseViewTest.php +++ b/tests/Feature/Licenses/Ui/LicenseViewTest.php @@ -7,7 +7,7 @@ use App\Models\Depreciation; use App\Models\User; use Tests\TestCase; -final class LicenseViewTest extends TestCase +class LicenseViewTest extends TestCase { public function testPermissionRequiredToViewLicense() { diff --git a/tests/Feature/Livewire/CategoryEditFormTest.php b/tests/Feature/Livewire/CategoryEditFormTest.php index 6b5a32123..a439f544a 100644 --- a/tests/Feature/Livewire/CategoryEditFormTest.php +++ b/tests/Feature/Livewire/CategoryEditFormTest.php @@ -6,7 +6,7 @@ use App\Livewire\CategoryEditForm; use Livewire\Livewire; use Tests\TestCase; -final class CategoryEditFormTest extends TestCase +class CategoryEditFormTest extends TestCase { public function testTheComponentCanRender() { diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php index b084c4207..171508b72 100644 --- a/tests/Feature/Locations/Api/CreateLocationsTest.php +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -6,7 +6,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -final class CreateLocationsTest extends TestCase +class CreateLocationsTest extends TestCase { public function testRequiresPermissionToCreateLocation() diff --git a/tests/Feature/Locations/Api/DeleteLocationsTest.php b/tests/Feature/Locations/Api/DeleteLocationsTest.php index 8f0891968..270582c90 100644 --- a/tests/Feature/Locations/Api/DeleteLocationsTest.php +++ b/tests/Feature/Locations/Api/DeleteLocationsTest.php @@ -7,7 +7,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -final class DeleteLocationsTest extends TestCase +class DeleteLocationsTest extends TestCase { public function testErrorReturnedViaApiIfLocationDoesNotExist() diff --git a/tests/Feature/Locations/Api/IndexLocationsTest.php b/tests/Feature/Locations/Api/IndexLocationsTest.php index 3c6309a78..7b3b10463 100644 --- a/tests/Feature/Locations/Api/IndexLocationsTest.php +++ b/tests/Feature/Locations/Api/IndexLocationsTest.php @@ -8,7 +8,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class IndexLocationsTest extends TestCase +class IndexLocationsTest extends TestCase { public function testViewingLocationIndexRequiresAuthentication() { diff --git a/tests/Feature/Locations/Api/LocationsForSelectListTest.php b/tests/Feature/Locations/Api/LocationsForSelectListTest.php index 4e20ef3d8..f34b97892 100644 --- a/tests/Feature/Locations/Api/LocationsForSelectListTest.php +++ b/tests/Feature/Locations/Api/LocationsForSelectListTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Illuminate\Testing\Fluent\AssertableJson; use Tests\TestCase; -final class LocationsForSelectListTest extends TestCase +class LocationsForSelectListTest extends TestCase { public function testGettingLocationListRequiresProperPermission() { diff --git a/tests/Feature/Locations/Api/LocationsViewTest.php b/tests/Feature/Locations/Api/LocationsViewTest.php index 618bf9c59..1d57e5826 100644 --- a/tests/Feature/Locations/Api/LocationsViewTest.php +++ b/tests/Feature/Locations/Api/LocationsViewTest.php @@ -7,7 +7,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -final class LocationsViewTest extends TestCase +class LocationsViewTest extends TestCase { public function testViewingLocationRequiresPermission() { diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php index ca3856871..a3dd8c228 100644 --- a/tests/Feature/Locations/Api/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -6,7 +6,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -final class UpdateLocationsTest extends TestCase +class UpdateLocationsTest extends TestCase { public function testRequiresPermissionToEditLocation() diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php index ef981d7d1..5e229f104 100644 --- a/tests/Feature/Locations/Ui/CreateLocationsTest.php +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -7,7 +7,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -final class CreateLocationsTest extends TestCase +class CreateLocationsTest extends TestCase { public function testPermissionRequiredToCreateLocation() { diff --git a/tests/Feature/Locations/Ui/IndexLocationsTest.php b/tests/Feature/Locations/Ui/IndexLocationsTest.php index 23574ae0c..43f117cb6 100644 --- a/tests/Feature/Locations/Ui/IndexLocationsTest.php +++ b/tests/Feature/Locations/Ui/IndexLocationsTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Locations\Ui; use App\Models\User; use Tests\TestCase; -final class IndexLocationsTest extends TestCase +class IndexLocationsTest extends TestCase { public function testPermissionRequiredToViewLocationsList() { diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php index 0db66a800..5359cd1b7 100644 --- a/tests/Feature/Locations/Ui/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -6,7 +6,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -final class UpdateLocationsTest extends TestCase +class UpdateLocationsTest extends TestCase { public function testPermissionRequiredToStoreLocation() { diff --git a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php index b00472b4e..449f65c7a 100644 --- a/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Email/EmailNotificationsUponCheckinTest.php @@ -11,7 +11,7 @@ use Illuminate\Support\Facades\Notification; use Tests\TestCase; #[Group('notifications')] -final class EmailNotificationsUponCheckinTest extends TestCase +class EmailNotificationsUponCheckinTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php index 32aa34770..adaede07e 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckinTest.php @@ -19,7 +19,7 @@ use Illuminate\Support\Facades\Notification; use Tests\TestCase; #[Group('notifications')] -final class SlackNotificationsUponCheckinTest extends TestCase +class SlackNotificationsUponCheckinTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php index d6ad65041..4f34da285 100644 --- a/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php +++ b/tests/Feature/Notifications/Webhooks/SlackNotificationsUponCheckoutTest.php @@ -21,7 +21,7 @@ use Illuminate\Support\Facades\Notification; use Tests\TestCase; #[Group('notifications')] -final class SlackNotificationsUponCheckoutTest extends TestCase +class SlackNotificationsUponCheckoutTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Reporting/CustomReportTest.php b/tests/Feature/Reporting/CustomReportTest.php index 89dcafa2c..4d11cb23c 100644 --- a/tests/Feature/Reporting/CustomReportTest.php +++ b/tests/Feature/Reporting/CustomReportTest.php @@ -10,7 +10,7 @@ use League\Csv\Reader; use PHPUnit\Framework\Assert; use Tests\TestCase; -final class CustomReportTest extends TestCase +class CustomReportTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Reporting/UnacceptedAssetReportTest.php b/tests/Feature/Reporting/UnacceptedAssetReportTest.php index 90ef96bc8..b3ec0b2e0 100644 --- a/tests/Feature/Reporting/UnacceptedAssetReportTest.php +++ b/tests/Feature/Reporting/UnacceptedAssetReportTest.php @@ -10,7 +10,7 @@ use League\Csv\Reader; use PHPUnit\Framework\Assert; use Tests\TestCase; -final class UnacceptedAssetReportTest extends TestCase +class UnacceptedAssetReportTest extends TestCase { protected function setUp(): void { diff --git a/tests/Feature/Settings/BrandingSettingsTest.php b/tests/Feature/Settings/BrandingSettingsTest.php index 1543bdce9..03e2b013f 100644 --- a/tests/Feature/Settings/BrandingSettingsTest.php +++ b/tests/Feature/Settings/BrandingSettingsTest.php @@ -10,7 +10,7 @@ use App\Models\User; use App\Models\Setting; -final class BrandingSettingsTest extends TestCase +class BrandingSettingsTest extends TestCase { public function testSiteNameIsRequired() { diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php index 83b0a1e3f..196902ac5 100644 --- a/tests/Feature/Settings/ShowSetUpPageTest.php +++ b/tests/Feature/Settings/ShowSetUpPageTest.php @@ -19,7 +19,7 @@ use Illuminate\Testing\TestResponse; use PDOException; use Tests\TestCase; -final class ShowSetUpPageTest extends TestCase +class ShowSetUpPageTest extends TestCase { /** * We do not want to make actual http request on every test to check .env file diff --git a/tests/Feature/Users/Api/DeleteUserTest.php b/tests/Feature/Users/Api/DeleteUserTest.php index 2c134ccc6..49625daac 100644 --- a/tests/Feature/Users/Api/DeleteUserTest.php +++ b/tests/Feature/Users/Api/DeleteUserTest.php @@ -8,7 +8,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -final class DeleteUserTest extends TestCase +class DeleteUserTest extends TestCase { diff --git a/tests/Feature/Users/Api/RestoreUserTest.php b/tests/Feature/Users/Api/RestoreUserTest.php index 709c2ac0f..0ffac8f07 100644 --- a/tests/Feature/Users/Api/RestoreUserTest.php +++ b/tests/Feature/Users/Api/RestoreUserTest.php @@ -8,7 +8,7 @@ use App\Models\Location; use App\Models\User; use Tests\TestCase; -final class RestoreUserTest extends TestCase +class RestoreUserTest extends TestCase { diff --git a/tests/Feature/Users/Api/UpdateUserTest.php b/tests/Feature/Users/Api/UpdateUserTest.php index 918d7f088..1c66bbdda 100644 --- a/tests/Feature/Users/Api/UpdateUserTest.php +++ b/tests/Feature/Users/Api/UpdateUserTest.php @@ -10,7 +10,7 @@ use App\Models\User; use Illuminate\Support\Facades\Hash; use Tests\TestCase; -final class UpdateUserTest extends TestCase +class UpdateUserTest extends TestCase { public function testCanUpdateUserViaPatch() { diff --git a/tests/Feature/Users/Api/UserSearchTest.php b/tests/Feature/Users/Api/UserSearchTest.php index 8478171c7..dc0ffdc80 100644 --- a/tests/Feature/Users/Api/UserSearchTest.php +++ b/tests/Feature/Users/Api/UserSearchTest.php @@ -7,7 +7,7 @@ use App\Models\User; use Laravel\Passport\Passport; use Tests\TestCase; -final class UserSearchTest extends TestCase +class UserSearchTest extends TestCase { public function testCanSearchByUserFirstAndLastName() { diff --git a/tests/Feature/Users/Api/UsersForSelectListTest.php b/tests/Feature/Users/Api/UsersForSelectListTest.php index 237ee57c8..1367f408d 100644 --- a/tests/Feature/Users/Api/UsersForSelectListTest.php +++ b/tests/Feature/Users/Api/UsersForSelectListTest.php @@ -8,7 +8,7 @@ use Illuminate\Testing\Fluent\AssertableJson; use Laravel\Passport\Passport; use Tests\TestCase; -final class UsersForSelectListTest extends TestCase +class UsersForSelectListTest extends TestCase { public function testUsersAreReturned() { diff --git a/tests/Feature/Users/Api/ViewUserTest.php b/tests/Feature/Users/Api/ViewUserTest.php index 325c8ec1f..07346dbbb 100644 --- a/tests/Feature/Users/Api/ViewUserTest.php +++ b/tests/Feature/Users/Api/ViewUserTest.php @@ -8,7 +8,7 @@ use Illuminate\Testing\Fluent\AssertableJson; use Laravel\Passport\Passport; use Tests\TestCase; -final class ViewUserTest extends TestCase +class ViewUserTest extends TestCase { public function testCanReturnUser() diff --git a/tests/Feature/Users/Ui/DeleteUserTest.php b/tests/Feature/Users/Ui/DeleteUserTest.php index 6d71041d6..da4c5a37e 100644 --- a/tests/Feature/Users/Ui/DeleteUserTest.php +++ b/tests/Feature/Users/Ui/DeleteUserTest.php @@ -11,7 +11,7 @@ use App\Models\Company; use App\Models\Asset; -final class DeleteUserTest extends TestCase +class DeleteUserTest extends TestCase { public function testUserCanDeleteAnotherUser() diff --git a/tests/Feature/Users/Ui/MergeUsersTest.php b/tests/Feature/Users/Ui/MergeUsersTest.php index 2685a72e8..a9ae11171 100644 --- a/tests/Feature/Users/Ui/MergeUsersTest.php +++ b/tests/Feature/Users/Ui/MergeUsersTest.php @@ -11,7 +11,7 @@ use App\Models\Actionlog; use Tests\TestCase; -final class MergeUsersTest extends TestCase +class MergeUsersTest extends TestCase { public function testAssetsAreTransferredOnUserMerge() { diff --git a/tests/Feature/Users/Ui/UpdateUserTest.php b/tests/Feature/Users/Ui/UpdateUserTest.php index 89c005b59..bef1d59a0 100644 --- a/tests/Feature/Users/Ui/UpdateUserTest.php +++ b/tests/Feature/Users/Ui/UpdateUserTest.php @@ -5,7 +5,7 @@ namespace Tests\Feature\Users\Ui; use App\Models\User; use Tests\TestCase; -final class UpdateUserTest extends TestCase +class UpdateUserTest extends TestCase { public function testUsersCanBeActivatedWithNumber() { diff --git a/tests/Feature/Users/Ui/ViewUserTest.php b/tests/Feature/Users/Ui/ViewUserTest.php index d28bbb6d3..c412e9e78 100644 --- a/tests/Feature/Users/Ui/ViewUserTest.php +++ b/tests/Feature/Users/Ui/ViewUserTest.php @@ -8,7 +8,7 @@ use App\Notifications\CurrentInventory; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class ViewUserTest extends TestCase +class ViewUserTest extends TestCase { public function testPermissionsForUserDetailPage() { diff --git a/tests/Unit/AccessoryTest.php b/tests/Unit/AccessoryTest.php index 2ce1b9624..ec931fad6 100644 --- a/tests/Unit/AccessoryTest.php +++ b/tests/Unit/AccessoryTest.php @@ -8,7 +8,7 @@ use App\Models\Category; use App\Models\Company; use Tests\TestCase; -final class AccessoryTest extends TestCase +class AccessoryTest extends TestCase { public function testAnAccessoryBelongsToACompany() { diff --git a/tests/Unit/AssetMaintenanceTest.php b/tests/Unit/AssetMaintenanceTest.php index 50ccaac35..46a0efdd7 100644 --- a/tests/Unit/AssetMaintenanceTest.php +++ b/tests/Unit/AssetMaintenanceTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\AssetMaintenance; use Tests\TestCase; -final class AssetMaintenanceTest extends TestCase +class AssetMaintenanceTest extends TestCase { public function testZerosOutWarrantyIfBlank() { diff --git a/tests/Unit/AssetModelTest.php b/tests/Unit/AssetModelTest.php index 57ac292f7..4cc62e20a 100644 --- a/tests/Unit/AssetModelTest.php +++ b/tests/Unit/AssetModelTest.php @@ -6,7 +6,7 @@ use App\Models\Category; use App\Models\AssetModel; use Tests\TestCase; -final class AssetModelTest extends TestCase +class AssetModelTest extends TestCase { public function testAnAssetModelContainsAssets() { diff --git a/tests/Unit/AssetTest.php b/tests/Unit/AssetTest.php index 7ba468ee3..ef0da1a1b 100644 --- a/tests/Unit/AssetTest.php +++ b/tests/Unit/AssetTest.php @@ -8,7 +8,7 @@ use Carbon\Carbon; use Tests\TestCase; use App\Models\Setting; -final class AssetTest extends TestCase +class AssetTest extends TestCase { public function testAutoIncrement() { diff --git a/tests/Unit/CategoryTest.php b/tests/Unit/CategoryTest.php index 75e79b0bd..391e29155 100644 --- a/tests/Unit/CategoryTest.php +++ b/tests/Unit/CategoryTest.php @@ -6,7 +6,7 @@ use App\Models\AssetModel; use App\Models\Asset; use Tests\TestCase; -final class CategoryTest extends TestCase +class CategoryTest extends TestCase { public function testFailsEmptyValidation() { diff --git a/tests/Unit/CompanyScopingTest.php b/tests/Unit/CompanyScopingTest.php index 664d6301f..ff55e8305 100644 --- a/tests/Unit/CompanyScopingTest.php +++ b/tests/Unit/CompanyScopingTest.php @@ -15,7 +15,7 @@ use App\Models\User; use Illuminate\Database\Eloquent\Model; use Tests\TestCase; -final class CompanyScopingTest extends TestCase +class CompanyScopingTest extends TestCase { public static function models(): array { diff --git a/tests/Unit/ComponentTest.php b/tests/Unit/ComponentTest.php index d0f960574..df8f64771 100644 --- a/tests/Unit/ComponentTest.php +++ b/tests/Unit/ComponentTest.php @@ -7,7 +7,7 @@ use App\Models\Component; use App\Models\Location; use Tests\TestCase; -final class ComponentTest extends TestCase +class ComponentTest extends TestCase { public function testAComponentBelongsToACompany() { diff --git a/tests/Unit/CustomFieldTest.php b/tests/Unit/CustomFieldTest.php index da4272323..d5704d8aa 100644 --- a/tests/Unit/CustomFieldTest.php +++ b/tests/Unit/CustomFieldTest.php @@ -8,7 +8,7 @@ use Tests\TestCase; * Test strings for db column names gathered from * http://www.omniglot.com/language/phrases/hovercraft.htm */ -final class CustomFieldTest extends TestCase +class CustomFieldTest extends TestCase { public function testFormat() { diff --git a/tests/Unit/DepreciationTest.php b/tests/Unit/DepreciationTest.php index c622eaa92..4dd842227 100644 --- a/tests/Unit/DepreciationTest.php +++ b/tests/Unit/DepreciationTest.php @@ -7,7 +7,7 @@ use App\Models\License; use App\Models\AssetModel; use Tests\TestCase; -final class DepreciationTest extends TestCase +class DepreciationTest extends TestCase { public function testADepreciationHasModels() { diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index dc06887e7..2fb1c58e2 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -8,7 +8,7 @@ use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Session; use Tests\TestCase; -final class HelperTest extends TestCase +class HelperTest extends TestCase { public function testDefaultChartColorsMethodHandlesHighValues() { diff --git a/tests/Unit/LdapTest.php b/tests/Unit/LdapTest.php index 3e7b9d75f..65bdbe627 100644 --- a/tests/Unit/LdapTest.php +++ b/tests/Unit/LdapTest.php @@ -7,7 +7,7 @@ use App\Models\Ldap; use Tests\TestCase; #[Group('ldap')] -final class LdapTest extends TestCase +class LdapTest extends TestCase { use \phpmock\phpunit\PHPMock; diff --git a/tests/Unit/Listeners/LogListenerTest.php b/tests/Unit/Listeners/LogListenerTest.php index f5ab6d139..011a5c51a 100644 --- a/tests/Unit/Listeners/LogListenerTest.php +++ b/tests/Unit/Listeners/LogListenerTest.php @@ -8,7 +8,7 @@ use App\Models\Asset; use App\Models\User; use Tests\TestCase; -final class LogListenerTest extends TestCase +class LogListenerTest extends TestCase { public function testLogsEntryOnCheckoutableCheckedOut() { diff --git a/tests/Unit/LocationTest.php b/tests/Unit/LocationTest.php index 0c5f535b0..3fded9e56 100644 --- a/tests/Unit/LocationTest.php +++ b/tests/Unit/LocationTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\Location; use Tests\TestCase; -final class LocationTest extends TestCase +class LocationTest extends TestCase { public function testPassesIfNotSelfParent() { diff --git a/tests/Unit/Models/Company/CompanyTest.php b/tests/Unit/Models/Company/CompanyTest.php index 66836afd7..6fd17e554 100644 --- a/tests/Unit/Models/Company/CompanyTest.php +++ b/tests/Unit/Models/Company/CompanyTest.php @@ -5,7 +5,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -final class CompanyTest extends TestCase +class CompanyTest extends TestCase { public function testACompanyCanHaveUsers() { diff --git a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php index 7ef5b9595..6d77c8873 100644 --- a/tests/Unit/Models/Company/GetIdForCurrentUserTest.php +++ b/tests/Unit/Models/Company/GetIdForCurrentUserTest.php @@ -6,7 +6,7 @@ use App\Models\Company; use App\Models\User; use Tests\TestCase; -final class GetIdForCurrentUserTest extends TestCase +class GetIdForCurrentUserTest extends TestCase { public function testReturnsProvidedValueWhenFullCompanySupportDisabled() { diff --git a/tests/Unit/Models/Labels/FieldOptionTest.php b/tests/Unit/Models/Labels/FieldOptionTest.php index 45756daec..6616ab230 100644 --- a/tests/Unit/Models/Labels/FieldOptionTest.php +++ b/tests/Unit/Models/Labels/FieldOptionTest.php @@ -7,7 +7,7 @@ use App\Models\Labels\FieldOption; use App\Models\User; use Tests\TestCase; -final class FieldOptionTest extends TestCase +class FieldOptionTest extends TestCase { public function testItDisplaysAssignedToProperly() { diff --git a/tests/Unit/NotificationTest.php b/tests/Unit/NotificationTest.php index dbeaa44ca..8005759a1 100644 --- a/tests/Unit/NotificationTest.php +++ b/tests/Unit/NotificationTest.php @@ -10,7 +10,7 @@ use App\Notifications\CheckoutAssetNotification; use Illuminate\Support\Facades\Notification; use Tests\TestCase; -final class NotificationTest extends TestCase +class NotificationTest extends TestCase { public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA() { diff --git a/tests/Unit/SnipeModelTest.php b/tests/Unit/SnipeModelTest.php index 3084aba1b..2bc81da61 100644 --- a/tests/Unit/SnipeModelTest.php +++ b/tests/Unit/SnipeModelTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\SnipeModel; use Tests\TestCase; -final class SnipeModelTest extends TestCase +class SnipeModelTest extends TestCase { public function testSetsPurchaseDatesAppropriately() { diff --git a/tests/Unit/SnipeTranslatorTest.php b/tests/Unit/SnipeTranslatorTest.php index c8f10b762..d374bf913 100644 --- a/tests/Unit/SnipeTranslatorTest.php +++ b/tests/Unit/SnipeTranslatorTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use Tests\TestCase; -final class SnipeTranslatorTest extends TestCase +class SnipeTranslatorTest extends TestCase { // the 'meatiest' of these tests will explicitly choose non-English as the language, because otherwise // the fallback-logic (which is to fall-back to 'en-US') will be conflated in with the translation logic diff --git a/tests/Unit/StatuslabelTest.php b/tests/Unit/StatuslabelTest.php index 71e74abab..fe5f3cacc 100644 --- a/tests/Unit/StatuslabelTest.php +++ b/tests/Unit/StatuslabelTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\Statuslabel; use Tests\TestCase; -final class StatuslabelTest extends TestCase +class StatuslabelTest extends TestCase { public function testRTDStatuslabelAdd() { diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index 1681fac94..e089fc402 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit; use App\Models\User; use Tests\TestCase; -final class UserTest extends TestCase +class UserTest extends TestCase { public function testFirstNameSplit() { From 047b77e038edf381d6a9aee1ffdfd0be50173377 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 13:34:51 -0700 Subject: [PATCH 055/118] Composer update for phpunit, collision, and paratest composer update phpunit/phpunit nunomaduro/collision brianium/paratest --with-all-dependencies --- composer.lock | 1234 ++++++++++++++++++++++++------------------------- 1 file changed, 599 insertions(+), 635 deletions(-) diff --git a/composer.lock b/composer.lock index ae6675b71..8e0e93474 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "51e716db4ccd70bf942062789f7303ad", + "content-hash": "35c741a2d3300848d758b187554b5b17", "packages": [ { "name": "alek13/slack", @@ -5184,38 +5184,43 @@ }, { "name": "nunomaduro/collision", - "version": "v6.4.0", + "version": "v7.10.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", "shasum": "" }, "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" }, "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.26.1", - "laravel/pint": "^1.1.1", - "nunomaduro/larastan": "^1.0.3", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.7", - "phpunit/phpunit": "^9.5.23", - "spatie/ignition": "^1.4.1" + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" @@ -5223,6 +5228,9 @@ } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -5268,7 +5276,7 @@ "type": "patreon" } ], - "time": "2023-01-03T12:54:54+00:00" + "time": "2023-10-11T15:45:01+00:00" }, { "name": "nunomaduro/termwind", @@ -7524,30 +7532,32 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -7586,7 +7596,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -7594,33 +7605,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7652,7 +7663,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -7660,34 +7672,34 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7729,7 +7741,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -7737,32 +7750,32 @@ "type": "github" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -7792,7 +7805,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -7800,7 +7813,7 @@ "type": "github" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "spatie/backtrace", @@ -8541,16 +8554,16 @@ }, { "name": "symfony/console", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", - "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", "shasum": "" }, "require": { @@ -8615,7 +8628,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.8" + "source": "https://github.com/symfony/console/tree/v6.4.10" }, "funding": [ { @@ -8631,7 +8644,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/css-selector", @@ -10445,20 +10458,20 @@ }, { "name": "symfony/string", - "version": "v6.4.8", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" + "reference": "ea272a882be7f20cad58d5d78c215001617b7f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", - "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07", + "reference": "ea272a882be7f20cad58d5d78c215001617b7f07", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -10468,11 +10481,12 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/intl": "^6.2|^7.0", + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0|^7.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -10511,7 +10525,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.8" + "source": "https://github.com/symfony/string/tree/v7.1.3" }, "funding": [ { @@ -10527,7 +10541,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-22T10:25:37+00:00" }, { "name": "symfony/translation", @@ -11846,16 +11860,16 @@ }, { "name": "brianium/paratest", - "version": "v6.11.1", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3" + "reference": "d4de825332842a7dee1ff350f0fd6caafa930d79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/78e297a969049ca7cc370e80ff5e102921ef39a3", - "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/d4de825332842a7dee1ff350f0fd6caafa930d79", + "reference": "d4de825332842a7dee1ff350f0fd6caafa930d79", "shasum": "" }, "require": { @@ -11863,25 +11877,27 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", - "jean85/pretty-package-versions": "^2.0.5", - "php": "^7.3 || ^8.0", - "phpunit/php-code-coverage": "^9.2.25", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-timer": "^5.0.3", - "phpunit/phpunit": "^9.6.4", - "sebastian/environment": "^5.1.5", - "symfony/console": "^5.4.28 || ^6.3.4 || ^7.0.0", - "symfony/process": "^5.4.28 || ^6.3.4 || ^7.0.0" + "fidry/cpu-core-counter": "^1.1.0", + "jean85/pretty-package-versions": "^2.0.6", + "php": "~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.14 || ^11.0.3", + "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", + "phpunit/php-timer": "^6.0.0 || ^7.0.0", + "phpunit/phpunit": "^10.5.20 || ^11.1.3", + "sebastian/environment": "^6.1.0 || ^7.1.0", + "symfony/console": "^6.4.7 || ^7.1.0", + "symfony/process": "^6.4.7 || ^7.1.0" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "infection/infection": "^0.27.6", - "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^5.4.25 || ^6.3.1 || ^7.0.0", - "vimeo/psalm": "^5.7.7" + "phpstan/phpstan": "^1.11.2", + "phpstan/phpstan-deprecation-rules": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.4.0", + "phpstan/phpstan-strict-rules": "^1.6.0", + "squizlabs/php_codesniffer": "^3.10.1", + "symfony/filesystem": "^6.4.3 || ^7.1.0" }, "bin": [ "bin/paratest", @@ -11922,7 +11938,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v6.11.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.4.5" }, "funding": [ { @@ -11934,7 +11950,7 @@ "type": "paypal" } ], - "time": "2024-03-13T06:54:29+00:00" + "time": "2024-05-31T13:59:20+00:00" }, { "name": "clue/ndjson-react", @@ -13971,16 +13987,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "10.1.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae", + "reference": "5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae", "shasum": "" }, "require": { @@ -13988,18 +14004,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -14008,7 +14024,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -14037,7 +14053,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.15" }, "funding": [ { @@ -14045,32 +14061,32 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-06-29T08:25:15+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -14097,7 +14113,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -14105,28 +14122,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -14134,7 +14151,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -14160,7 +14177,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -14168,32 +14185,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -14219,7 +14236,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -14227,32 +14245,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14278,7 +14296,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -14286,54 +14304,52 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.19", + "version": "10.5.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "reference": "8e9e80872b4e8064401788ee8a32d40b4455318f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e9e80872b4e8064401788ee8a32d40b4455318f", + "reference": "8e9e80872b4e8064401788ee8a32d40b4455318f", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.15", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.1", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -14341,7 +14357,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -14373,7 +14389,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.29" }, "funding": [ { @@ -14389,7 +14405,7 @@ "type": "tidelift" } ], - "time": "2024-04-05T04:35:58+00:00" + "time": "2024-07-30T11:08:00+00:00" }, { "name": "react/cache", @@ -14923,28 +14939,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -14967,7 +14983,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -14975,32 +14992,32 @@ "type": "github" } ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -15023,7 +15040,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -15031,435 +15048,27 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:19:30+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:03:51+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:35:11+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:20:34+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { @@ -15482,10 +15091,11 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -15493,32 +15103,386 @@ "type": "github" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { - "name": "sebastian/type", - "version": "3.2.1", + "name": "sebastian/complexity", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:47:14+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" } }, "autoload": { @@ -15541,7 +15505,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -15549,29 +15513,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -15594,7 +15558,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -15602,7 +15566,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "slevomat/coding-standard", From 6cfbf835c7d3789dfb85478f73b9f32e009af213 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 13:37:53 -0700 Subject: [PATCH 056/118] Migrate phpunit.xml vendor/bin/phpunit --migrate-configuration --- phpunit.xml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 9d4fa9114..c21353eef 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,21 +1,14 @@ - - - app/ - - ./tests/Unit @@ -33,4 +26,9 @@ + + + app/ + + From c60bc5cdbe87e517e64ee99fe2af6c41852ffd7b Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 13:51:44 -0700 Subject: [PATCH 057/118] Change indents back to 2 --- composer.json | 264 +++++++++++++++++++++++++------------------------- 1 file changed, 132 insertions(+), 132 deletions(-) diff --git a/composer.json b/composer.json index 6d44077bb..5467e94e3 100644 --- a/composer.json +++ b/composer.json @@ -1,135 +1,135 @@ { - "name": "snipe/snipe-it", - "description": "Open source asset management system built on Laravel.", - "keywords": [ - "assets", - "asset-management", - "it-tools", - "inventory", - "laravel" - ], - "license": "AGPL-3.0-or-later", - "type": "project", - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/grokability/laravel-scim-server" - } - ], - "require": { - "php": "^8.1", - "ext-curl": "*", - "ext-fileinfo": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-pdo": "*", - "alek13/slack": "^2.0", - "arietimmerman/laravel-scim-server": "dev-master", - "bacon/bacon-qr-code": "^2.0", - "barryvdh/laravel-debugbar": "^3.13", - "barryvdh/laravel-dompdf": "^2.0", - "doctrine/cache": "^1.10", - "doctrine/dbal": "^3.1", - "doctrine/instantiator": "^1.3", - "eduardokum/laravel-mail-auto-embed": "^2.0", - "enshrined/svg-sanitize": "^0.15.0", - "erusev/parsedown": "^1.7", - "guzzlehttp/guzzle": "^7.0.1", - "intervention/image": "^2.5", - "javiereguiluz/easyslugger": "^1.0", - "laravel-notification-channels/google-chat": "^3.0", - "laravel-notification-channels/microsoft-teams": "^1.1", - "laravel/framework": "^10.0", - "laravel/helpers": "^1.4", - "laravel/passport": "^11.0", - "laravel/slack-notification-channel": "^2.3", - "laravel/socialite": "^5.6", - "laravel/tinker": "^2.6", - "laravel/ui": "^4.0", - "laravelcollective/html": "^6.2", - "league/csv": "^9.7", - "league/flysystem-aws-s3-v3": "^3.0", - "livewire/livewire": "^3.5", - "neitanod/forceutf8": "^2.0", - "nesbot/carbon": "^2.32", - "nunomaduro/collision": "^7.0", - "okvpn/clock-lts": "^1.0", - "onelogin/php-saml": "^3.4", - "paragonie/constant_time_encoding": "^2.3", - "paragonie/sodium_compat": "^1.19", - "phpdocumentor/reflection-docblock": "^5.1", - "phpspec/prophecy": "^1.10", - "pragmarx/google2fa-laravel": "^1.3", - "rollbar/rollbar-laravel": "^8.0", - "spatie/laravel-backup": "^8.8", - "spatie/laravel-ignition": "^2.0", - "tecnickcom/tc-lib-barcode": "^1.15", - "tecnickcom/tcpdf": "^6.5", - "unicodeveloper/laravel-password": "^1.0", - "watson/validating": "^8.1" - }, - "suggest": { - "ext-ldap": "*", - "ext-zip": "*", - "ext-exif": "*" - }, - "require-dev": { - "brianium/paratest": "^7.0", - "fakerphp/faker": "^1.16", - "larastan/larastan": "^2.9", - "mockery/mockery": "^1.4", - "nunomaduro/phpinsights": "^2.7", - "php-mock/php-mock-phpunit": "^2.10", - "phpunit/phpunit": "^10.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/css-selector": "^4.4", - "symfony/dom-crawler": "^4.4", - "vimeo/psalm": "^5.13" - }, - "extra": { - "laravel": { - "dont-discover": [ - "rollbar/rollbar-laravel" - ] - } - }, - "autoload": { - "classmap": [ - "database" - ], - "psr-4": { - "App\\": "app/", - "Database\\Factories\\": "database/factories/", - "Database\\Seeders\\": "database/seeders/" - } - }, - "autoload-dev": { - "classmap": [ - "tests/TestCase.php" - ], - "psr-4": { - "App\\": "app/", - "Tests\\": "tests/" - } - }, - "scripts": { - "post-autoload-dump": [ - "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", - "@php artisan package:discover --ansi", - "@php artisan vendor:publish --force --tag=livewire:assets --ansi" - ], - "post-create-project-cmd": [ - "php artisan key:generate" - ] - }, - "config": { - "preferred-install": "dist", - "sort-packages": true, - "optimize-autoloader": true, - "discard-changes": true, - "process-timeout": 3000, - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } + "name": "snipe/snipe-it", + "description": "Open source asset management system built on Laravel.", + "keywords": [ + "assets", + "asset-management", + "it-tools", + "inventory", + "laravel" + ], + "license": "AGPL-3.0-or-later", + "type": "project", + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/grokability/laravel-scim-server" } + ], + "require": { + "php": "^8.1", + "ext-curl": "*", + "ext-fileinfo": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-pdo": "*", + "alek13/slack": "^2.0", + "arietimmerman/laravel-scim-server": "dev-master", + "bacon/bacon-qr-code": "^2.0", + "barryvdh/laravel-debugbar": "^3.13", + "barryvdh/laravel-dompdf": "^2.0", + "doctrine/cache": "^1.10", + "doctrine/dbal": "^3.1", + "doctrine/instantiator": "^1.3", + "eduardokum/laravel-mail-auto-embed": "^2.0", + "enshrined/svg-sanitize": "^0.15.0", + "erusev/parsedown": "^1.7", + "guzzlehttp/guzzle": "^7.0.1", + "intervention/image": "^2.5", + "javiereguiluz/easyslugger": "^1.0", + "laravel-notification-channels/google-chat": "^3.0", + "laravel-notification-channels/microsoft-teams": "^1.1", + "laravel/framework": "^10.0", + "laravel/helpers": "^1.4", + "laravel/passport": "^11.0", + "laravel/slack-notification-channel": "^2.3", + "laravel/socialite": "^5.6", + "laravel/tinker": "^2.6", + "laravel/ui": "^4.0", + "laravelcollective/html": "^6.2", + "league/csv": "^9.7", + "league/flysystem-aws-s3-v3": "^3.0", + "livewire/livewire": "^3.5", + "neitanod/forceutf8": "^2.0", + "nesbot/carbon": "^2.32", + "nunomaduro/collision": "^7.0", + "okvpn/clock-lts": "^1.0", + "onelogin/php-saml": "^3.4", + "paragonie/constant_time_encoding": "^2.3", + "paragonie/sodium_compat": "^1.19", + "phpdocumentor/reflection-docblock": "^5.1", + "phpspec/prophecy": "^1.10", + "pragmarx/google2fa-laravel": "^1.3", + "rollbar/rollbar-laravel": "^8.0", + "spatie/laravel-backup": "^8.8", + "spatie/laravel-ignition": "^2.0", + "tecnickcom/tc-lib-barcode": "^1.15", + "tecnickcom/tcpdf": "^6.5", + "unicodeveloper/laravel-password": "^1.0", + "watson/validating": "^8.1" + }, + "suggest": { + "ext-ldap": "*", + "ext-zip": "*", + "ext-exif": "*" + }, + "require-dev": { + "brianium/paratest": "^7.0", + "fakerphp/faker": "^1.16", + "larastan/larastan": "^2.9", + "mockery/mockery": "^1.4", + "nunomaduro/phpinsights": "^2.7", + "php-mock/php-mock-phpunit": "^2.10", + "phpunit/phpunit": "^10.0", + "squizlabs/php_codesniffer": "^3.5", + "symfony/css-selector": "^4.4", + "symfony/dom-crawler": "^4.4", + "vimeo/psalm": "^5.13" + }, + "extra": { + "laravel": { + "dont-discover": [ + "rollbar/rollbar-laravel" + ] + } + }, + "autoload": { + "classmap": [ + "database" + ], + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "classmap": [ + "tests/TestCase.php" + ], + "psr-4": { + "App\\": "app/", + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi", + "@php artisan vendor:publish --force --tag=livewire:assets --ansi" + ], + "post-create-project-cmd": [ + "php artisan key:generate" + ] + }, + "config": { + "preferred-install": "dist", + "sort-packages": true, + "optimize-autoloader": true, + "discard-changes": true, + "process-timeout": 3000, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + } } From d3cb3c03d2e6cdc70c55efb668993fa5bca32cb5 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 15:01:01 -0700 Subject: [PATCH 058/118] Rerun composer update using php 8.1 --- composer.lock | 68 +++++++++++++++++++++++++-------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/composer.lock b/composer.lock index 8e0e93474..f7c46672d 100644 --- a/composer.lock +++ b/composer.lock @@ -10458,20 +10458,20 @@ }, { "name": "symfony/string", - "version": "v7.1.3", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ea272a882be7f20cad58d5d78c215001617b7f07" + "reference": "ccf9b30251719567bfd46494138327522b9a9446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07", - "reference": "ea272a882be7f20cad58d5d78c215001617b7f07", + "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", + "reference": "ccf9b30251719567bfd46494138327522b9a9446", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -10481,12 +10481,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10525,7 +10524,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.3" + "source": "https://github.com/symfony/string/tree/v6.4.10" }, "funding": [ { @@ -10541,7 +10540,7 @@ "type": "tidelift" } ], - "time": "2024-07-22T10:25:37+00:00" + "time": "2024-07-22T10:21:14+00:00" }, { "name": "symfony/translation", @@ -11860,16 +11859,16 @@ }, { "name": "brianium/paratest", - "version": "v7.4.5", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "d4de825332842a7dee1ff350f0fd6caafa930d79" + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/d4de825332842a7dee1ff350f0fd6caafa930d79", - "reference": "d4de825332842a7dee1ff350f0fd6caafa930d79", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", "shasum": "" }, "require": { @@ -11877,27 +11876,28 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^1.1.0", - "jean85/pretty-package-versions": "^2.0.6", - "php": "~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.14 || ^11.0.3", - "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", - "phpunit/php-timer": "^6.0.0 || ^7.0.0", - "phpunit/phpunit": "^10.5.20 || ^11.1.3", - "sebastian/environment": "^6.1.0 || ^7.1.0", - "symfony/console": "^6.4.7 || ^7.1.0", - "symfony/process": "^6.4.7 || ^7.1.0" + "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.2", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4 || ^7.0.0", + "symfony/process": "^6.3.4 || ^7.0.0" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^1.11.2", - "phpstan/phpstan-deprecation-rules": "^1.2.0", - "phpstan/phpstan-phpunit": "^1.4.0", - "phpstan/phpstan-strict-rules": "^1.6.0", - "squizlabs/php_codesniffer": "^3.10.1", - "symfony/filesystem": "^6.4.3 || ^7.1.0" + "infection/infection": "^0.27.6", + "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^6.3.1 || ^7.0.0" }, "bin": [ "bin/paratest", @@ -11938,7 +11938,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.4.5" + "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" }, "funding": [ { @@ -11950,7 +11950,7 @@ "type": "paypal" } ], - "time": "2024-05-31T13:59:20+00:00" + "time": "2023-10-31T09:24:17+00:00" }, { "name": "clue/ndjson-react", From 2a8ac81eeddeae13f12963973bf63f81bc30b37b Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 6 Aug 2024 15:22:13 -0700 Subject: [PATCH 059/118] Fix namespace --- tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php index d84135cce..4a97fe30d 100644 --- a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php @@ -1,9 +1,8 @@ Date: Tue, 6 Aug 2024 16:13:51 -0700 Subject: [PATCH 060/118] Switch to snake case --- .../Users/Ui/BulkActions/BulkDeleteUsersTest.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php index 4a97fe30d..016d28bcd 100644 --- a/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php +++ b/tests/Feature/Users/Ui/BulkActions/BulkDeleteUsersTest.php @@ -14,7 +14,7 @@ use Tests\TestCase; class BulkDeleteUsersTest extends TestCase { - public function testRequiresCorrectPermission() + public function test_requires_correct_permission() { $this->actingAs(User::factory()->create()) ->post(route('users/bulksave'), [ @@ -26,7 +26,7 @@ class BulkDeleteUsersTest extends TestCase ->assertForbidden(); } - public function testValidation() + public function test_validation() { $user = User::factory()->create(); Asset::factory()->assignedToUser($user)->create(); @@ -50,7 +50,7 @@ class BulkDeleteUsersTest extends TestCase ])->assertSessionHas('error')->assertRedirect(); } - public function testCannotPerformBulkActionsOnSelf() + public function test_cannot_perform_bulk_actions_on_self() { $actor = User::factory()->editUsers()->create(); @@ -67,7 +67,7 @@ class BulkDeleteUsersTest extends TestCase $this->assertNotSoftDeleted($actor); } - public function testAccessoriesCanBeBulkCheckedIn() + public function test_accessories_can_be_bulk_checked_in() { [$accessoryA, $accessoryB] = Accessory::factory()->count(2)->create(); [$userA, $userB, $userC] = User::factory()->count(3)->create(); @@ -97,7 +97,7 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $accessoryA); } - public function testAssetsCanBeBulkCheckedIn() + public function test_assets_can_be_bulk_checked_in() { [$userA, $userB, $userC] = User::factory()->count(3)->create(); @@ -123,7 +123,7 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $assetForUserC); } - public function testConsumablesCanBeBulkCheckedIn() + public function test_consumables_can_be_bulk_checked_in() { [$consumableA, $consumableB] = Consumable::factory()->count(2)->create(); [$userA, $userB, $userC] = User::factory()->count(3)->create(); @@ -153,7 +153,7 @@ class BulkDeleteUsersTest extends TestCase $this->assertActionLogCheckInEntryFor($userC, $consumableA); } - public function testLicenseSeatsCanBeBulkCheckedIn() + public function test_license_seats_can_be_bulk_checked_in() { [$userA, $userB, $userC] = User::factory()->count(3)->create(); @@ -202,7 +202,7 @@ class BulkDeleteUsersTest extends TestCase ]); } - public function testUsersCanBeDeletedInBulk() + public function test_users_can_be_deleted_in_bulk() { [$userA, $userB, $userC] = User::factory()->count(3)->create(); From 1706ddd5118054f166964947fe57f0d4864e7c16 Mon Sep 17 00:00:00 2001 From: Brady Wetherington Date: Wed, 7 Aug 2024 16:06:00 +0100 Subject: [PATCH 061/118] working fixup script, but failing tests. But I have tests! --- .../FixupAssignedToWithoutAssignedType.php | 66 + public/js/dist/all.js | 91681 +--------------- public/js/dist/bootstrap-table.js | 8404 +- public/mix-manifest.json | 77 +- .../FixupAssignedToAssignedTypeTest.php | 55 + 5 files changed, 164 insertions(+), 100119 deletions(-) create mode 100644 app/Console/Commands/FixupAssignedToWithoutAssignedType.php create mode 100644 tests/Feature/Console/FixupAssignedToAssignedTypeTest.php diff --git a/app/Console/Commands/FixupAssignedToWithoutAssignedType.php b/app/Console/Commands/FixupAssignedToWithoutAssignedType.php new file mode 100644 index 000000000..ea3a55439 --- /dev/null +++ b/app/Console/Commands/FixupAssignedToWithoutAssignedType.php @@ -0,0 +1,66 @@ +whereNotNull("assigned_to")->withTrashed(); + $this->withProgressBar($assets->get(), function (Asset $asset) { + //now check each action log, from the most recent backwards, to find the last checkin or checkout + foreach($asset->log()->orderBy("id","desc")->get() as $action_log) { + if($this->option("debug")) { + $this->info("Asset id: " . $asset->id . " action log, action type is: " . $action_log->action_type); + } + switch($action_log->action_type) { + case 'checkin from': + if($this->option("debug")) { + $this->info("Doing a checkin for ".$asset->id); + } + $asset->assigned_to = null; + // if you have a required custom field, we still want to save, and we *don't* want an action_log + $asset->saveQuietly(); + return; + + case 'checkout': + if($this->option("debug")) { + $this->info("Doing a checkout for " . $asset->id . " picking target type: " . $action_log->target_type); + } + if($asset->assigned_to != $action_log->target_id) { + $this->error("Asset's assigned_to does *NOT* match Action Log's target_id. \$asset->assigned_to=".$asset->assigned_to." vs. \$action_log->target_id=".$action_log->target_id); + //FIXME - do we abort here? Do we try to keep looking? I don't know, this means your data is *really* messed up... + } + $asset->assigned_type = $action_log->target_type; + $asset->saveQuietly(); // see above + return; + } + } + $asset->assigned_to = null; //asset was never checked in or out in its lifetime - it stays 'checked in' + $asset->saveQuietly(); //see above + }); + $this->newLine(); + $this->info("Assets assigned_type are fixed"); + } +} diff --git a/public/js/dist/all.js b/public/js/dist/all.js index a8dbd199a..bfc702306 100644 --- a/public/js/dist/all.js +++ b/public/js/dist/all.js @@ -1,91678 +1,3 @@ -/*! - * jQuery JavaScript Library v3.5.1 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2020-05-04T22:49Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var flat = arr.flat ? function( array ) { - return arr.flat.call( array ); -} : function( array ) { - return arr.concat.apply( [], array ); -}; - - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - -var isFunction = function isFunction( obj ) { - - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; - - -var isWindow = function isWindow( obj ) { - return obj != null && obj === obj.window; - }; - - -var document = window.document; - - - - var preservedScriptAttributes = { - type: true, - src: true, - nonce: true, - noModule: true - }; - - function DOMEval( code, node, doc ) { - doc = doc || document; - - var i, val, - script = doc.createElement( "script" ); - - script.text = code; - if ( node ) { - for ( i in preservedScriptAttributes ) { - - // Support: Firefox 64+, Edge 18+ - // Some browsers don't support the "nonce" property on scripts. - // On the other hand, just using `getAttribute` is not enough as - // the `nonce` attribute is reset to an empty string whenever it - // becomes browsing-context connected. - // See https://github.com/whatwg/html/issues/2369 - // See https://html.spec.whatwg.org/#nonce-attributes - // The `node.getAttribute` check was added for the sake of - // `jQuery.globalEval` so that it can fake a nonce-containing node - // via an object. - val = node[ i ] || node.getAttribute && node.getAttribute( i ); - if ( val ) { - script.setAttribute( i, val ); - } - } - } - doc.head.appendChild( script ).parentNode.removeChild( script ); - } - - -function toType( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; -} -/* global Symbol */ -// Defining this global in .eslintrc.json would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.5.1", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - - // Return all the elements in a clean array - if ( num == null ) { - return slice.call( this ); - } - - // Return just the one element from the set - return num < 0 ? this[ num + this.length ] : this[ num ]; - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - even: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return ( i + 1 ) % 2; - } ) ); - }, - - odd: function() { - return this.pushStack( jQuery.grep( this, function( _elem, i ) { - return i % 2; - } ) ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - copy = options[ name ]; - - // Prevent Object.prototype pollution - // Prevent never-ending loop - if ( name === "__proto__" || target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = Array.isArray( copy ) ) ) ) { - src = target[ name ]; - - // Ensure proper type for the source value - if ( copyIsArray && !Array.isArray( src ) ) { - clone = []; - } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { - clone = {}; - } else { - clone = src; - } - copyIsArray = false; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - // Evaluates a script in a provided context; falls back to the global one - // if not specified. - globalEval: function( code, options, doc ) { - DOMEval( code, { nonce: options && options.nonce }, doc ); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return flat( ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( _i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = toType( obj ); - - if ( isFunction( obj ) || isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.5 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2020-03-14 - */ -( function( window ) { -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - nonnativeSelectorCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ( {} ).hasOwnProperty, - arr = [], - pop = arr.pop, - pushNative = arr.push, - push = arr.push, - slice = arr.slice, - - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[ i ] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + - "ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram - identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + - "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - - // "Attribute values must be CSS identifiers [capture 5] - // or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + - whitespace + "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + - whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + - "*" ), - rdescend = new RegExp( whitespace + "|>" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + - whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + - whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + - "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + - "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rhtml = /HTML$/i, - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), - funescape = function( escape, nonHex ) { - var high = "0x" + escape.slice( 1 ) - 0x10000; - - return nonHex ? - - // Strip the backslash prefix from a non-hex escape sequence - nonHex : - - // Replace a hexadecimal escape sequence with the encoded Unicode code point - // Support: IE <=11+ - // For values outside the Basic Multilingual Plane (BMP), manually construct a - // surrogate pair - high < 0 ? - String.fromCharCode( high + 0x10000 ) : - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + - ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - inDisabledFieldset = addCombinator( - function( elem ) { - return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - ( arr = slice.call( preferredDoc.childNodes ) ), - preferredDoc.childNodes - ); - - // Support: Android<4.0 - // Detect silently failing push.apply - // eslint-disable-next-line no-unused-expressions - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - pushNative.apply( target, slice.call( els ) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - - // Can't trust NodeList.length - while ( ( target[ j++ ] = els[ i++ ] ) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - setDocument( context ); - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { - - // ID selector - if ( ( m = match[ 1 ] ) ) { - - // Document context - if ( nodeType === 9 ) { - if ( ( elem = context.getElementById( m ) ) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && ( elem = newContext.getElementById( m ) ) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[ 2 ] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !nonnativeSelectorCache[ selector + " " ] && - ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - - // Support: IE 8 only - // Exclude object elements - ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - - newSelector = selector; - newContext = context; - - // qSA considers elements outside a scoping root when evaluating child or - // descendant combinators, which is not what we want. - // In such cases, we work around the behavior by prefixing every selector in the - // list with an ID selector referencing the scope context. - // The technique has to be used as well when a leading combinator is used - // as such selectors are not recognized by querySelectorAll. - // Thanks to Andrew Dupont for this technique. - if ( nodeType === 1 && - ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - - // We can use :scope instead of the ID hack if the browser - // supports it & if we're not changing the context. - if ( newContext !== context || !support.scope ) { - - // Capture the context ID, setting it first if necessary - if ( ( nid = context.getAttribute( "id" ) ) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", ( nid = expando ) ); - } - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + - toSelector( groups[ i ] ); - } - newSelector = groups.join( "," ); - } - - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - nonnativeSelectorCache( selector, true ); - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return ( cache[ key + " " ] = value ); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement( "fieldset" ); - - try { - return !!fn( el ); - } catch ( e ) { - return false; - } finally { - - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split( "|" ), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[ i ] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( ( cur = cur.nextSibling ) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return ( name === "input" || name === "button" ) && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - - // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Only certain elements can match :enabled or :disabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled - // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled - if ( "form" in elem ) { - - // Check for inherited disabledness on relevant non-disabled elements: - // * listed form-associated elements in a disabled fieldset - // https://html.spec.whatwg.org/multipage/forms.html#category-listed - // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled - // * option elements in a disabled optgroup - // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled - // All such elements have a "form" property. - if ( elem.parentNode && elem.disabled === false ) { - - // Option elements defer to a parent optgroup if present - if ( "label" in elem ) { - if ( "label" in elem.parentNode ) { - return elem.parentNode.disabled === disabled; - } else { - return elem.disabled === disabled; - } - } - - // Support: IE 6 - 11 - // Use the isDisabled shortcut property to check for disabled fieldset ancestors - return elem.isDisabled === disabled || - - // Where there is no isDisabled, check manually - /* jshint -W018 */ - elem.isDisabled !== !disabled && - inDisabledFieldset( elem ) === disabled; - } - - return elem.disabled === disabled; - - // Try to winnow out elements that can't be disabled before trusting the disabled property. - // Some victims get caught in our net (label, legend, menu, track), but it shouldn't - // even exist on them, let alone have a boolean value. - } else if ( "label" in elem ) { - return elem.disabled === disabled; - } - - // Remaining elements are neither :enabled nor :disabled - return false; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction( function( argument ) { - argument = +argument; - return markFunction( function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ ( j = matchIndexes[ i ] ) ] ) { - seed[ j ] = !( matches[ j ] = seed[ j ] ); - } - } - } ); - } ); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - var namespace = elem.namespaceURI, - docElem = ( elem.ownerDocument || elem ).documentElement; - - // Support: IE <=8 - // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes - // https://bugs.jquery.com/ticket/4833 - return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, subWindow, - doc = node ? node.ownerDocument || node : preferredDoc; - - // Return early if doc is invalid or already selected - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Update global variables - document = doc; - docElem = document.documentElement; - documentIsHTML = !isXML( document ); - - // Support: IE 9 - 11+, Edge 12 - 18+ - // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( preferredDoc != document && - ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { - - // Support: IE 11, Edge - if ( subWindow.addEventListener ) { - subWindow.addEventListener( "unload", unloadHandler, false ); - - // Support: IE 9 - 10 only - } else if ( subWindow.attachEvent ) { - subWindow.attachEvent( "onunload", unloadHandler ); - } - } - - // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, - // Safari 4 - 5 only, Opera <=11.6 - 12.x only - // IE/Edge & older browsers don't support the :scope pseudo-class. - // Support: Safari 6.0 only - // Safari 6.0 supports :scope but it's an alias of :root there. - support.scope = assert( function( el ) { - docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); - return typeof el.querySelectorAll !== "undefined" && - !el.querySelectorAll( ":scope fieldset div" ).length; - } ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert( function( el ) { - el.className = "i"; - return !el.getAttribute( "className" ); - } ); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert( function( el ) { - el.appendChild( document.createComment( "" ) ); - return !el.getElementsByTagName( "*" ).length; - } ); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( document.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programmatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert( function( el ) { - docElem.appendChild( el ).id = expando; - return !document.getElementsByName || !document.getElementsByName( expando ).length; - } ); - - // ID filter and find - if ( support.getById ) { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute( "id" ) === attrId; - }; - }; - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var elem = context.getElementById( id ); - return elem ? [ elem ] : []; - } - }; - } else { - Expr.filter[ "ID" ] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode( "id" ); - return node && node.value === attrId; - }; - }; - - // Support: IE 6 - 7 only - // getElementById is not reliable as a find shortcut - Expr.find[ "ID" ] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var node, i, elems, - elem = context.getElementById( id ); - - if ( elem ) { - - // Verify the id attribute - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - - // Fall back on getElementsByName - elems = context.getElementsByName( id ); - i = 0; - while ( ( elem = elems[ i++ ] ) ) { - node = elem.getAttributeNode( "id" ); - if ( node && node.value === id ) { - return [ elem ]; - } - } - } - - return []; - } - }; - } - - // Tag - Expr.find[ "TAG" ] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { - if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See https://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { - - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert( function( el ) { - - var input; - - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // https://bugs.jquery.com/ticket/12359 - docElem.appendChild( el ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll( "[selected]" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ - if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push( "~=" ); - } - - // Support: IE 11+, Edge 15 - 18+ - // IE 11/Edge don't find elements on a `[name='']` query in some cases. - // Adding a temporary attribute to the document before the selection works - // around the issue. - // Interestingly, IE 10 & older don't seem to have the issue. - input = document.createElement( "input" ); - input.setAttribute( "name", "" ); - el.appendChild( input ); - if ( !el.querySelectorAll( "[name='']" ).length ) { - rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + - whitespace + "*(?:''|\"\")" ); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll( ":checked" ).length ) { - rbuggyQSA.push( ":checked" ); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibling-combinator selector` fails - if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push( ".#.+[+~]" ); - } - - // Support: Firefox <=3.6 - 5 only - // Old Firefox doesn't throw on a badly-escaped identifier. - el.querySelectorAll( "\\\f" ); - rbuggyQSA.push( "[\\r\\n\\f]" ); - } ); - - assert( function( el ) { - el.innerHTML = "" + - ""; - - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement( "input" ); - input.setAttribute( "type", "hidden" ); - el.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll( "[name=d]" ).length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: IE9-11+ - // IE's :disabled selector does not pick up the children of disabled fieldsets - docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Support: Opera 10 - 11 only - // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll( "*,:x" ); - rbuggyQSA.push( ",.*:" ); - } ); - } - - if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector ) ) ) ) { - - assert( function( el ) { - - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( el, "*" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( el, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - } ); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully self-exclusive - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - ) ); - } : - function( a, b ) { - if ( b ) { - while ( ( b = b.parentNode ) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { - - // Choose the first element that is related to our preferred document - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( a == document || a.ownerDocument == preferredDoc && - contains( preferredDoc, a ) ) { - return -1; - } - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( b == document || b.ownerDocument == preferredDoc && - contains( preferredDoc, b ) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - return a == document ? -1 : - b == document ? 1 : - /* eslint-enable eqeqeq */ - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( ( cur = cur.parentNode ) ) { - ap.unshift( cur ); - } - cur = b; - while ( ( cur = cur.parentNode ) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[ i ] === bp[ i ] ) { - i++; - } - - return i ? - - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[ i ], bp[ i ] ) : - - // Otherwise nodes in our document sort first - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - /* eslint-disable eqeqeq */ - ap[ i ] == preferredDoc ? -1 : - bp[ i ] == preferredDoc ? 1 : - /* eslint-enable eqeqeq */ - 0; - }; - - return document; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - setDocument( elem ); - - if ( support.matchesSelector && documentIsHTML && - !nonnativeSelectorCache[ expr + " " ] && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch ( e ) { - nonnativeSelectorCache( expr, true ); - } - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( context.ownerDocument || context ) != document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - - // Set document vars if needed - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( ( elem.ownerDocument || elem ) != document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; -}; - -Sizzle.escape = function( sel ) { - return ( sel + "" ).replace( rcssescape, fcssescape ); -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( ( elem = results[ i++ ] ) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - - // If no nodeType, this is expected to be an array - while ( ( node = elem[ i++ ] ) ) { - - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[ 1 ] = match[ 1 ].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[ 3 ] = ( match[ 3 ] || match[ 4 ] || - match[ 5 ] || "" ).replace( runescape, funescape ); - - if ( match[ 2 ] === "~=" ) { - match[ 3 ] = " " + match[ 3 ] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[ 1 ] = match[ 1 ].toLowerCase(); - - if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - - // nth-* requires argument - if ( !match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[ 4 ] = +( match[ 4 ] ? - match[ 5 ] + ( match[ 6 ] || 1 ) : - 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); - match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - - // other types prohibit arguments - } else if ( match[ 3 ] ) { - Sizzle.error( match[ 0 ] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[ 6 ] && match[ 2 ]; - - if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[ 3 ] ) { - match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - - // Get excess from tokenize (recursively) - ( excess = tokenize( unquoted, true ) ) && - - // advance to the next closing parenthesis - ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { - - // excess is a negative index - match[ 0 ] = match[ 0 ].slice( 0, excess ); - match[ 2 ] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { - return true; - } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - ( pattern = new RegExp( "(^|" + whitespace + - ")" + className + "(" + whitespace + "|$)" ) ) && classCache( - className, function( elem ) { - return pattern.test( - typeof elem.className === "string" && elem.className || - typeof elem.getAttribute !== "undefined" && - elem.getAttribute( "class" ) || - "" - ); - } ); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - /* eslint-disable max-len */ - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - /* eslint-enable max-len */ - - }; - }, - - "CHILD": function( type, what, _argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, _context, xml ) { - var cache, uniqueCache, outerCache, node, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType, - diff = false; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( ( node = node[ dir ] ) ) { - if ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) { - - return false; - } - } - - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - - // Seek `elem` from a previously-cached index - - // ...in a gzip-friendly way - node = parent; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex && cache[ 2 ]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( ( node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - } else { - - // Use previously-cached element index if available - if ( useCache ) { - - // ...in a gzip-friendly way - node = elem; - outerCache = node[ expando ] || ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - cache = uniqueCache[ type ] || []; - nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; - diff = nodeIndex; - } - - // xml :nth-child(...) - // or :nth-last-child(...) or :nth(-last)?-of-type(...) - if ( diff === false ) { - - // Use the same loop as above to seek `elem` from the start - while ( ( node = ++nodeIndex && node && node[ dir ] || - ( diff = nodeIndex = 0 ) || start.pop() ) ) { - - if ( ( ofType ? - node.nodeName.toLowerCase() === name : - node.nodeType === 1 ) && - ++diff ) { - - // Cache the index of each encountered element - if ( useCache ) { - outerCache = node[ expando ] || - ( node[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ node.uniqueID ] || - ( outerCache[ node.uniqueID ] = {} ); - - uniqueCache[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction( function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[ i ] ); - seed[ idx ] = !( matches[ idx ] = matched[ i ] ); - } - } ) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - - // Potentially complex pseudos - "not": markFunction( function( selector ) { - - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction( function( seed, matches, _context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( ( elem = unmatched[ i ] ) ) { - seed[ i ] = !( matches[ i ] = elem ); - } - } - } ) : - function( elem, _context, xml ) { - input[ 0 ] = elem; - matcher( input, null, xml, results ); - - // Don't keep the element (issue #299) - input[ 0 ] = null; - return !results.pop(); - }; - } ), - - "has": markFunction( function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - } ), - - "contains": markFunction( function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; - }; - } ), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - - // lang value must be a valid identifier - if ( !ridentifier.test( lang || "" ) ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( ( elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); - return false; - }; - } ), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && - ( !document.hasFocus || document.hasFocus() ) && - !!( elem.type || elem.href || ~elem.tabIndex ); - }, - - // Boolean properties - "enabled": createDisabledPseudo( false ), - "disabled": createDisabledPseudo( true ), - - "checked": function( elem ) { - - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return ( nodeName === "input" && !!elem.checked ) || - ( nodeName === "option" && !!elem.selected ); - }, - - "selected": function( elem ) { - - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - // eslint-disable-next-line no-unused-expressions - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos[ "empty" ]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( ( attr = elem.getAttribute( "type" ) ) == null || - attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo( function() { - return [ 0 ]; - } ), - - "last": createPositionalPseudo( function( _matchIndexes, length ) { - return [ length - 1 ]; - } ), - - "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - } ), - - "even": createPositionalPseudo( function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "odd": createPositionalPseudo( function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? - argument + length : - argument > length ? - length : - argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ), - - "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - } ) - } -}; - -Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || ( match = rcomma.exec( soFar ) ) ) { - if ( match ) { - - // Don't consume trailing commas as valid - soFar = soFar.slice( match[ 0 ].length ) || soFar; - } - groups.push( ( tokens = [] ) ); - } - - matched = false; - - // Combinators - if ( ( match = rcombinators.exec( soFar ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - - // Cast descendant combinators to space - type: match[ 0 ].replace( rtrim, " " ) - } ); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || - ( match = preFilters[ type ]( match ) ) ) ) { - matched = match.shift(); - tokens.push( { - value: matched, - type: type, - matches: match - } ); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[ i ].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - skip = combinator.next, - key = skip || dir, - checkNonElements = base && key === "parentNode", - doneName = done++; - - return combinator.first ? - - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - return false; - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, uniqueCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching - if ( xml ) { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( ( elem = elem[ dir ] ) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || ( elem[ expando ] = {} ); - - // Support: IE <9 only - // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || - ( outerCache[ elem.uniqueID ] = {} ); - - if ( skip && skip === elem.nodeName.toLowerCase() ) { - elem = elem[ dir ] || elem; - } else if ( ( oldCache = uniqueCache[ key ] ) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return ( newCache[ 2 ] = oldCache[ 2 ] ); - } else { - - // Reuse newcache so results back-propagate to previous elements - uniqueCache[ key ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { - return true; - } - } - } - } - } - return false; - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[ i ]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[ 0 ]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[ i ], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( ( elem = unmatched[ i ] ) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction( function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( - selector || "*", - context.nodeType ? [ context ] : context, - [] - ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( ( elem = temp[ i ] ) ) { - matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) ) { - - // Restore matcherIn since elem is not yet a final match - temp.push( ( matcherIn[ i ] = elem ) ); - } - } - postFinder( null, ( matcherOut = [] ), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( ( elem = matcherOut[ i ] ) && - ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - - seed[ temp ] = !( results[ temp ] = elem ); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - } ); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[ 0 ].type ], - implicitRelative = leadingRelative || Expr.relative[ " " ], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - ( checkContext = context ).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { - matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; - } else { - matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[ j ].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens - .slice( 0, i - 1 ) - .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), - - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), - len = elems.length; - - if ( outermost ) { - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - outermostContext = context == document || context || outermost; - } - - // Add elements passing elementMatchers directly to results - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - - // Support: IE 11+, Edge 17 - 18+ - // IE/Edge sometimes throw a "Permission denied" error when strict-comparing - // two documents; shallow comparisons work. - // eslint-disable-next-line eqeqeq - if ( !context && elem.ownerDocument != document ) { - setDocument( elem ); - xml = !documentIsHTML; - } - while ( ( matcher = elementMatchers[ j++ ] ) ) { - if ( matcher( elem, context || document, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - - // They will have gone through all possible matchers - if ( ( elem = !matcher && elem ) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // `i` is now the count of elements visited above, and adding it to `matchedCount` - // makes the latter nonnegative. - matchedCount += i; - - // Apply set filters to unmatched elements - // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` - // equals `i`), unless we didn't visit _any_ elements in the above loop because we have - // no element matchers and no seed. - // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that - // case, which will result in a "00" `matchedCount` that differs from `i` but is also - // numerically zero. - if ( bySet && i !== matchedCount ) { - j = 0; - while ( ( matcher = setMatchers[ j++ ] ) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !( unmatched[ i ] || setMatched[ i ] ) ) { - setMatched[ i ] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[ i ] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( - selector, - matcherFromGroupMatchers( elementMatchers, setMatchers ) - ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( ( selector = compiled.selector || selector ) ); - - results = results || []; - - // Try to minimize operations if there is only one selector in the list and no seed - // (the latter of which guarantees us context) - if ( match.length === 1 ) { - - // Reduce context if the leading compound selector is an ID - tokens = match[ 0 ] = match[ 0 ].slice( 0 ); - if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - - context = ( Expr.find[ "ID" ]( token.matches[ 0 ] - .replace( runescape, funescape ), context ) || [] )[ 0 ]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[ i ]; - - // Abort if we hit a combinator - if ( Expr.relative[ ( type = token.type ) ] ) { - break; - } - if ( ( find = Expr.find[ type ] ) ) { - - // Search, expanding context for leading sibling combinators - if ( ( seed = find( - token.matches[ 0 ].replace( runescape, funescape ), - rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || - context - ) ) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - !context || rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert( function( el ) { - - // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; -} ); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert( function( el ) { - el.innerHTML = ""; - return el.firstChild.getAttribute( "href" ) === "#"; -} ) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - } ); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert( function( el ) { - el.innerHTML = ""; - el.firstChild.setAttribute( "value", "" ); - return el.firstChild.getAttribute( "value" ) === ""; -} ) ) { - addHandle( "value", function( elem, _name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - } ); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert( function( el ) { - return el.getAttribute( "disabled" ) == null; -} ) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - ( val = elem.getAttributeNode( name ) ) && val.specified ? - val.value : - null; - } - } ); -} - -return Sizzle; - -} )( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; - -// Deprecated -jQuery.expr[ ":" ] = jQuery.expr.pseudos; -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; -jQuery.escapeSelector = Sizzle.escape; - - - - -var dir = function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; -}; - - -var siblings = function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; -}; - - -var rneedsContext = jQuery.expr.match.needsContext; - - - -function nodeName( elem, name ) { - - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - -}; -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); - - - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) !== not; - } ); - } - - // Single element - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - } ); - } - - // Arraylike of elements (jQuery, arguments, Array) - if ( typeof qualifier !== "string" ) { - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not; - } ); - } - - // Filtered directly for both simple and complex selectors - return jQuery.filter( qualifier, elements, not ); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - if ( elems.length === 1 && elem.nodeType === 1 ) { - return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; - } - - return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - } ) ); -}; - -jQuery.fn.extend( { - find: function( selector ) { - var i, ret, - len = this.length, - self = this; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter( function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - } ) ); - } - - ret = this.pushStack( [] ); - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - return len > 1 ? jQuery.uniqueSort( ret ) : ret; - }, - filter: function( selector ) { - return this.pushStack( winnow( this, selector || [], false ) ); - }, - not: function( selector ) { - return this.pushStack( winnow( this, selector || [], true ) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -} ); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - // Shortcut simple #id case for speed - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - - init = jQuery.fn.init = function( selector, context, root ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Method init() accepts an alternate rootjQuery - // so migrate can support jQuery.sub (gh-2101) - root = root || rootjQuery; - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector[ 0 ] === "<" && - selector[ selector.length - 1 ] === ">" && - selector.length >= 3 ) { - - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && ( match[ 1 ] || !context ) ) { - - // HANDLE: $(html) -> $(array) - if ( match[ 1 ] ) { - context = context instanceof jQuery ? context[ 0 ] : context; - - // Option to run scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[ 1 ], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - - // Properties of context are called as methods if possible - if ( isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[ 2 ] ); - - if ( elem ) { - - // Inject the element directly into the jQuery object - this[ 0 ] = elem; - this.length = 1; - } - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || root ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this[ 0 ] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( isFunction( selector ) ) { - return root.ready !== undefined ? - root.ready( selector ) : - - // Execute immediately if ready is not present - selector( jQuery ); - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - - // Methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend( { - has: function( target ) { - var targets = jQuery( target, this ), - l = targets.length; - - return this.filter( function() { - var i = 0; - for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[ i ] ) ) { - return true; - } - } - } ); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - targets = typeof selectors !== "string" && jQuery( selectors ); - - // Positional selectors never match, since there's no _selection_ context - if ( !rneedsContext.test( selectors ) ) { - for ( ; i < l; i++ ) { - for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - - // Always skip document fragments - if ( cur.nodeType < 11 && ( targets ? - targets.index( cur ) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector( cur, selectors ) ) ) { - - matched.push( cur ); - break; - } - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); - }, - - // Determine the position of an element within the set - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; - } - - // Index in selector - if ( typeof elem === "string" ) { - return indexOf.call( jQuery( elem ), this[ 0 ] ); - } - - // Locate the position of the desired element - return indexOf.call( this, - - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[ 0 ] : elem - ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.uniqueSort( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - } -} ); - -function sibling( cur, dir ) { - while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} - return cur; -} - -jQuery.each( { - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, _i, until ) { - return dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, _i, until ) { - return dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, _i, until ) { - return dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return siblings( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return siblings( elem.firstChild ); - }, - contents: function( elem ) { - if ( elem.contentDocument != null && - - // Support: IE 11+ - // elements with no `data` attribute has an object - // `contentDocument` with a `null` prototype. - getProto( elem.contentDocument ) ) { - - return elem.contentDocument; - } - - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } - - return jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var matched = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - matched = jQuery.filter( selector, matched ); - } - - if ( this.length > 1 ) { - - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - jQuery.uniqueSort( matched ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - matched.reverse(); - } - } - - return this.pushStack( matched ); - }; -} ); -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); - - - -// Convert String-formatted options into Object-formatted ones -function createOptions( options ) { - var object = {}; - jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { - object[ flag ] = true; - } ); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - createOptions( options ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - - // Last fire value for non-forgettable lists - memory, - - // Flag to know if list was already fired - fired, - - // Flag to prevent firing - locked, - - // Actual callback list - list = [], - - // Queue of execution data for repeatable lists - queue = [], - - // Index of currently firing callback (modified by add/remove as needed) - firingIndex = -1, - - // Fire callbacks - fire = function() { - - // Enforce single-firing - locked = locked || options.once; - - // Execute callbacks for all pending executions, - // respecting firingIndex overrides and runtime changes - fired = firing = true; - for ( ; queue.length; firingIndex = -1 ) { - memory = queue.shift(); - while ( ++firingIndex < list.length ) { - - // Run callback and check for early termination - if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && - options.stopOnFalse ) { - - // Jump to end and forget the data so .add doesn't re-fire - firingIndex = list.length; - memory = false; - } - } - } - - // Forget the data if we're done with it - if ( !options.memory ) { - memory = false; - } - - firing = false; - - // Clean up if we're done firing for good - if ( locked ) { - - // Keep an empty list if we have data for future add calls - if ( memory ) { - list = []; - - // Otherwise, this object is spent - } else { - list = ""; - } - } - }, - - // Actual Callbacks object - self = { - - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - - // If we have memory from a past run, we should fire after adding - if ( memory && !firing ) { - firingIndex = list.length - 1; - queue.push( memory ); - } - - ( function add( args ) { - jQuery.each( args, function( _, arg ) { - if ( isFunction( arg ) ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && toType( arg ) !== "string" ) { - - // Inspect recursively - add( arg ); - } - } ); - } )( arguments ); - - if ( memory && !firing ) { - fire(); - } - } - return this; - }, - - // Remove a callback from the list - remove: function() { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - - // Handle firing indexes - if ( index <= firingIndex ) { - firingIndex--; - } - } - } ); - return this; - }, - - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? - jQuery.inArray( fn, list ) > -1 : - list.length > 0; - }, - - // Remove all callbacks from the list - empty: function() { - if ( list ) { - list = []; - } - return this; - }, - - // Disable .fire and .add - // Abort any current/pending executions - // Clear all callbacks and values - disable: function() { - locked = queue = []; - list = memory = ""; - return this; - }, - disabled: function() { - return !list; - }, - - // Disable .fire - // Also disable .add unless we have memory (since it would have no effect) - // Abort any pending executions - lock: function() { - locked = queue = []; - if ( !memory && !firing ) { - list = memory = ""; - } - return this; - }, - locked: function() { - return !!locked; - }, - - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( !locked ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - queue.push( args ); - if ( !firing ) { - fire(); - } - } - return this; - }, - - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -function Identity( v ) { - return v; -} -function Thrower( ex ) { - throw ex; -} - -function adoptValue( value, resolve, reject, noValue ) { - var method; - - try { - - // Check for promise aspect first to privilege synchronous behavior - if ( value && isFunction( ( method = value.promise ) ) ) { - method.call( value ).done( resolve ).fail( reject ); - - // Other thenables - } else if ( value && isFunction( ( method = value.then ) ) ) { - method.call( value, resolve, reject ); - - // Other non-thenables - } else { - - // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: - // * false: [ value ].slice( 0 ) => resolve( value ) - // * true: [ value ].slice( 1 ) => resolve() - resolve.apply( undefined, [ value ].slice( noValue ) ); - } - - // For Promises/A+, convert exceptions into rejections - // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in - // Deferred#then to conditionally suppress rejection. - } catch ( value ) { - - // Support: Android 4.0 only - // Strict mode functions invoked without .call/.apply get global-object context - reject.apply( undefined, [ value ] ); - } -} - -jQuery.extend( { - - Deferred: function( func ) { - var tuples = [ - - // action, add listener, callbacks, - // ... .then handlers, argument index, [final state] - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ), 2 ], - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 0, "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), 1, "rejected" ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - "catch": function( fn ) { - return promise.then( null, fn ); - }, - - // Keep pipe for back-compat - pipe: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( _i, tuple ) { - - // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; - - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - // deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && isFunction( returned.promise ) ) { - returned.promise() - .progress( newDefer.notify ) - .done( newDefer.resolve ) - .fail( newDefer.reject ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - }, - then: function( onFulfilled, onRejected, onProgress ) { - var maxDepth = 0; - function resolve( depth, deferred, handler, special ) { - return function() { - var that = this, - args = arguments, - mightThrow = function() { - var returned, then; - - // Support: Promises/A+ section 2.3.3.3.3 - // https://promisesaplus.com/#point-59 - // Ignore double-resolution attempts - if ( depth < maxDepth ) { - return; - } - - returned = handler.apply( that, args ); - - // Support: Promises/A+ section 2.3.1 - // https://promisesaplus.com/#point-48 - if ( returned === deferred.promise() ) { - throw new TypeError( "Thenable self-resolution" ); - } - - // Support: Promises/A+ sections 2.3.3.1, 3.5 - // https://promisesaplus.com/#point-54 - // https://promisesaplus.com/#point-75 - // Retrieve `then` only once - then = returned && - - // Support: Promises/A+ section 2.3.4 - // https://promisesaplus.com/#point-64 - // Only check objects and functions for thenability - ( typeof returned === "object" || - typeof returned === "function" ) && - returned.then; - - // Handle a returned thenable - if ( isFunction( then ) ) { - - // Special processors (notify) just wait for resolution - if ( special ) { - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ) - ); - - // Normal processors (resolve) also hook into progress - } else { - - // ...and disregard older resolution values - maxDepth++; - - then.call( - returned, - resolve( maxDepth, deferred, Identity, special ), - resolve( maxDepth, deferred, Thrower, special ), - resolve( maxDepth, deferred, Identity, - deferred.notifyWith ) - ); - } - - // Handle all other returned values - } else { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Identity ) { - that = undefined; - args = [ returned ]; - } - - // Process the value(s) - // Default process is resolve - ( special || deferred.resolveWith )( that, args ); - } - }, - - // Only normal processors (resolve) catch and reject exceptions - process = special ? - mightThrow : - function() { - try { - mightThrow(); - } catch ( e ) { - - if ( jQuery.Deferred.exceptionHook ) { - jQuery.Deferred.exceptionHook( e, - process.stackTrace ); - } - - // Support: Promises/A+ section 2.3.3.3.4.1 - // https://promisesaplus.com/#point-61 - // Ignore post-resolution exceptions - if ( depth + 1 >= maxDepth ) { - - // Only substitute handlers pass on context - // and multiple values (non-spec behavior) - if ( handler !== Thrower ) { - that = undefined; - args = [ e ]; - } - - deferred.rejectWith( that, args ); - } - } - }; - - // Support: Promises/A+ section 2.3.3.3.1 - // https://promisesaplus.com/#point-57 - // Re-resolve promises immediately to dodge false rejection from - // subsequent errors - if ( depth ) { - process(); - } else { - - // Call an optional hook to record the stack, in case of exception - // since it's otherwise lost when execution goes async - if ( jQuery.Deferred.getStackHook ) { - process.stackTrace = jQuery.Deferred.getStackHook(); - } - window.setTimeout( process ); - } - }; - } - - return jQuery.Deferred( function( newDefer ) { - - // progress_handlers.add( ... ) - tuples[ 0 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onProgress ) ? - onProgress : - Identity, - newDefer.notifyWith - ) - ); - - // fulfilled_handlers.add( ... ) - tuples[ 1 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onFulfilled ) ? - onFulfilled : - Identity - ) - ); - - // rejected_handlers.add( ... ) - tuples[ 2 ][ 3 ].add( - resolve( - 0, - newDefer, - isFunction( onRejected ) ? - onRejected : - Thrower - ) - ); - } ).promise(); - }, - - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 5 ]; - - // promise.progress = list.add - // promise.done = list.add - // promise.fail = list.add - promise[ tuple[ 1 ] ] = list.add; - - // Handle state - if ( stateString ) { - list.add( - function() { - - // state = "resolved" (i.e., fulfilled) - // state = "rejected" - state = stateString; - }, - - // rejected_callbacks.disable - // fulfilled_callbacks.disable - tuples[ 3 - i ][ 2 ].disable, - - // rejected_handlers.disable - // fulfilled_handlers.disable - tuples[ 3 - i ][ 3 ].disable, - - // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock, - - // progress_handlers.lock - tuples[ 0 ][ 3 ].lock - ); - } - - // progress_handlers.fire - // fulfilled_handlers.fire - // rejected_handlers.fire - list.add( tuple[ 3 ].fire ); - - // deferred.notify = function() { deferred.notifyWith(...) } - // deferred.resolve = function() { deferred.resolveWith(...) } - // deferred.reject = function() { deferred.rejectWith(...) } - deferred[ tuple[ 0 ] ] = function() { - deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); - return this; - }; - - // deferred.notifyWith = list.fireWith - // deferred.resolveWith = list.fireWith - // deferred.rejectWith = list.fireWith - deferred[ tuple[ 0 ] + "With" ] = list.fireWith; - } ); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( singleValue ) { - var - - // count of uncompleted subordinates - remaining = arguments.length, - - // count of unprocessed arguments - i = remaining, - - // subordinate fulfillment data - resolveContexts = Array( i ), - resolveValues = slice.call( arguments ), - - // the master Deferred - master = jQuery.Deferred(), - - // subordinate callback factory - updateFunc = function( i ) { - return function( value ) { - resolveContexts[ i ] = this; - resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); - } - }; - }; - - // Single- and empty arguments are adopted like Promise.resolve - if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, - !remaining ); - - // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || - isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - - return master.then(); - } - } - - // Multiple arguments are aggregated like Promise.all array elements - while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); - } - - return master.promise(); - } -} ); - - -// These usually indicate a programmer mistake during development, -// warn about them ASAP rather than swallowing them by default. -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; - -jQuery.Deferred.exceptionHook = function( error, stack ) { - - // Support: IE 8 - 9 only - // Console exists when dev tools are open, which can happen at any time - if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { - window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); - } -}; - - - - -jQuery.readyException = function( error ) { - window.setTimeout( function() { - throw error; - } ); -}; - - - - -// The deferred used on DOM ready -var readyList = jQuery.Deferred(); - -jQuery.fn.ready = function( fn ) { - - readyList - .then( fn ) - - // Wrap jQuery.readyException in a function so that the lookup - // happens at the time of error handling instead of callback - // registration. - .catch( function( error ) { - jQuery.readyException( error ); - } ); - - return this; -}; - -jQuery.extend( { - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - } -} ); - -jQuery.ready.then = readyList.then; - -// The ready event handler and self cleanup method -function completed() { - document.removeEventListener( "DOMContentLoaded", completed ); - window.removeEventListener( "load", completed ); - jQuery.ready(); -} - -// Catch cases where $(document).ready() is called -// after the browser event has already occurred. -// Support: IE <=9 - 10 only -// Older IE sometimes signals "interactive" too soon -if ( document.readyState === "complete" || - ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - - // Handle it asynchronously to allow scripts the opportunity to delay ready - window.setTimeout( jQuery.ready ); - -} else { - - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed ); -} - - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - len = elems.length, - bulk = key == null; - - // Sets many values - if ( toType( key ) === "object" ) { - chainable = true; - for ( i in key ) { - access( elems, fn, i, key[ i ], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, _key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < len; i++ ) { - fn( - elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) - ); - } - } - } - - if ( chainable ) { - return elems; - } - - // Gets - if ( bulk ) { - return fn.call( elems ); - } - - return len ? fn( elems[ 0 ], key ) : emptyGet; -}; - - -// Matches dashed string for camelizing -var rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g; - -// Used by camelCase as callback to replace() -function fcamelCase( _all, letter ) { - return letter.toUpperCase(); -} - -// Convert dashed to camelCase; used by the css and data modules -// Support: IE <=9 - 11, Edge 12 - 15 -// Microsoft forgot to hump their vendor prefix (#9572) -function camelCase( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); -} -var acceptData = function( owner ) { - - // Accepts only: - // - Node - // - Node.ELEMENT_NODE - // - Node.DOCUMENT_NODE - // - Object - // - Any - return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); -}; - - - - -function Data() { - this.expando = jQuery.expando + Data.uid++; -} - -Data.uid = 1; - -Data.prototype = { - - cache: function( owner ) { - - // Check if the owner object already has a cache - var value = owner[ this.expando ]; - - // If not, create one - if ( !value ) { - value = {}; - - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return an empty object. - if ( acceptData( owner ) ) { - - // If it is a node unlikely to be stringify-ed or looped over - // use plain assignment - if ( owner.nodeType ) { - owner[ this.expando ] = value; - - // Otherwise secure it in a non-enumerable property - // configurable must be true to allow the property to be - // deleted when data is removed - } else { - Object.defineProperty( owner, this.expando, { - value: value, - configurable: true - } ); - } - } - } - - return value; - }, - set: function( owner, data, value ) { - var prop, - cache = this.cache( owner ); - - // Handle: [ owner, key, value ] args - // Always use camelCase key (gh-2257) - if ( typeof data === "string" ) { - cache[ camelCase( data ) ] = value; - - // Handle: [ owner, { properties } ] args - } else { - - // Copy the properties one-by-one to the cache object - for ( prop in data ) { - cache[ camelCase( prop ) ] = data[ prop ]; - } - } - return cache; - }, - get: function( owner, key ) { - return key === undefined ? - this.cache( owner ) : - - // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; - }, - access: function( owner, key, value ) { - - // In cases where either: - // - // 1. No key was specified - // 2. A string key was specified, but no value provided - // - // Take the "read" path and allow the get method to determine - // which value to return, respectively either: - // - // 1. The entire cache object - // 2. The data stored at the key - // - if ( key === undefined || - ( ( key && typeof key === "string" ) && value === undefined ) ) { - - return this.get( owner, key ); - } - - // When the key is not a string, or both a key and value - // are specified, set or extend (existing objects) with either: - // - // 1. An object of properties - // 2. A key and value - // - this.set( owner, key, value ); - - // Since the "set" path can have two possible entry points - // return the expected data based on which path was taken[*] - return value !== undefined ? value : key; - }, - remove: function( owner, key ) { - var i, - cache = owner[ this.expando ]; - - if ( cache === undefined ) { - return; - } - - if ( key !== undefined ) { - - // Support array or space separated string of keys - if ( Array.isArray( key ) ) { - - // If key is an array of keys... - // We always set camelCase keys, so remove that. - key = key.map( camelCase ); - } else { - key = camelCase( key ); - - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - key = key in cache ? - [ key ] : - ( key.match( rnothtmlwhite ) || [] ); - } - - i = key.length; - - while ( i-- ) { - delete cache[ key[ i ] ]; - } - } - - // Remove the expando if there's no more data - if ( key === undefined || jQuery.isEmptyObject( cache ) ) { - - // Support: Chrome <=35 - 45 - // Webkit & Blink performance suffers when deleting properties - // from DOM nodes, so set to undefined instead - // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) - if ( owner.nodeType ) { - owner[ this.expando ] = undefined; - } else { - delete owner[ this.expando ]; - } - } - }, - hasData: function( owner ) { - var cache = owner[ this.expando ]; - return cache !== undefined && !jQuery.isEmptyObject( cache ); - } -}; -var dataPriv = new Data(); - -var dataUser = new Data(); - - - -// Implementation Summary -// -// 1. Enforce API surface and semantic compatibility with 1.9.x branch -// 2. Improve the module's maintainability by reducing the storage -// paths to a single mechanism. -// 3. Use the same single mechanism to support "private" and "user" data. -// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) -// 5. Avoid exposing implementation details on user objects (eg. expando properties) -// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /[A-Z]/g; - -function getData( data ) { - if ( data === "true" ) { - return true; - } - - if ( data === "false" ) { - return false; - } - - if ( data === "null" ) { - return null; - } - - // Only convert to a number if it doesn't change the string - if ( data === +data + "" ) { - return +data; - } - - if ( rbrace.test( data ) ) { - return JSON.parse( data ); - } - - return data; -} - -function dataAttr( elem, key, data ) { - var name; - - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = getData( data ); - } catch ( e ) {} - - // Make sure we set the data so it isn't changed later - dataUser.set( elem, key, data ); - } else { - data = undefined; - } - } - return data; -} - -jQuery.extend( { - hasData: function( elem ) { - return dataUser.hasData( elem ) || dataPriv.hasData( elem ); - }, - - data: function( elem, name, data ) { - return dataUser.access( elem, name, data ); - }, - - removeData: function( elem, name ) { - dataUser.remove( elem, name ); - }, - - // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to dataPriv methods, these can be deprecated. - _data: function( elem, name, data ) { - return dataPriv.access( elem, name, data ); - }, - - _removeData: function( elem, name ) { - dataPriv.remove( elem, name ); - } -} ); - -jQuery.fn.extend( { - data: function( key, value ) { - var i, name, data, - elem = this[ 0 ], - attrs = elem && elem.attributes; - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = dataUser.get( elem ); - - if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE 11 only - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = camelCase( name.slice( 5 ) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - dataPriv.set( elem, "hasDataAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each( function() { - dataUser.set( this, key ); - } ); - } - - return access( this, function( value ) { - var data; - - // The calling jQuery object (element matches) is not empty - // (and therefore has an element appears at this[ 0 ]) and the - // `value` parameter was not undefined. An empty jQuery object - // will result in `undefined` for elem = this[ 0 ] which will - // throw an exception if an attempt to read a data cache is made. - if ( elem && value === undefined ) { - - // Attempt to get data from the cache - // The key will always be camelCased in Data - data = dataUser.get( elem, key ); - if ( data !== undefined ) { - return data; - } - - // Attempt to "discover" the data in - // HTML5 custom data-* attrs - data = dataAttr( elem, key ); - if ( data !== undefined ) { - return data; - } - - // We tried really hard, but the data doesn't exist. - return; - } - - // Set the data... - this.each( function() { - - // We always store the camelCased key - dataUser.set( this, key, value ); - } ); - }, null, value, arguments.length > 1, null, true ); - }, - - removeData: function( key ) { - return this.each( function() { - dataUser.remove( this, key ); - } ); - } -} ); - - -jQuery.extend( { - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = dataPriv.get( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || Array.isArray( data ) ) { - queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // Clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // Not public - generate a queueHooks object, or return the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { - empty: jQuery.Callbacks( "once memory" ).add( function() { - dataPriv.remove( elem, [ type + "queue", key ] ); - } ) - } ); - } -} ); - -jQuery.fn.extend( { - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[ 0 ], type ); - } - - return data === undefined ? - this : - this.each( function() { - var queue = jQuery.queue( this, type, data ); - - // Ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - } ); - }, - dequeue: function( type ) { - return this.each( function() { - jQuery.dequeue( this, type ); - } ); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -} ); -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; - -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); - - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var documentElement = document.documentElement; - - - - var isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ); - }, - composed = { composed: true }; - - // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only - // Check attachment across shadow DOM boundaries when possible (gh-3504) - // Support: iOS 10.0-10.2 only - // Early iOS 10 versions support `attachShadow` but not `getRootNode`, - // leading to errors. We need to check for `getRootNode`. - if ( documentElement.getRootNode ) { - isAttached = function( elem ) { - return jQuery.contains( elem.ownerDocument, elem ) || - elem.getRootNode( composed ) === elem.ownerDocument; - }; - } -var isHiddenWithinTree = function( elem, el ) { - - // isHiddenWithinTree might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - - // Inline style trumps all - return elem.style.display === "none" || - elem.style.display === "" && - - // Otherwise, check computed style - // Support: Firefox <=43 - 45 - // Disconnected elements can have computed display: none, so first confirm that elem is - // in the document. - isAttached( elem ) && - - jQuery.css( elem, "display" ) === "none"; - }; - - - -function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, scale, - maxIterations = 20, - currentValue = tween ? - function() { - return tween.cur(); - } : - function() { - return jQuery.css( elem, prop, "" ); - }, - initial = currentValue(), - unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), - - // Starting value computation is required for potential unit mismatches - initialInUnit = elem.nodeType && - ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && - rcssNum.exec( jQuery.css( elem, prop ) ); - - if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { - - // Support: Firefox <=54 - // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) - initial = initial / 2; - - // Trust units reported by jQuery.css - unit = unit || initialInUnit[ 3 ]; - - // Iteratively approximate from a nonzero starting point - initialInUnit = +initial || 1; - - while ( maxIterations-- ) { - - // Evaluate and update our best guess (doubling guesses that zero out). - // Finish if the scale equals or crosses 1 (making the old*new product non-positive). - jQuery.style( elem, prop, initialInUnit + unit ); - if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { - maxIterations = 0; - } - initialInUnit = initialInUnit / scale; - - } - - initialInUnit = initialInUnit * 2; - jQuery.style( elem, prop, initialInUnit + unit ); - - // Make sure we update the tween properties later on - valueParts = valueParts || []; - } - - if ( valueParts ) { - initialInUnit = +initialInUnit || +initial || 0; - - // Apply relative offset (+=/-=) if specified - adjusted = valueParts[ 1 ] ? - initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : - +valueParts[ 2 ]; - if ( tween ) { - tween.unit = unit; - tween.start = initialInUnit; - tween.end = adjusted; - } - } - return adjusted; -} - - -var defaultDisplayMap = {}; - -function getDefaultDisplay( elem ) { - var temp, - doc = elem.ownerDocument, - nodeName = elem.nodeName, - display = defaultDisplayMap[ nodeName ]; - - if ( display ) { - return display; - } - - temp = doc.body.appendChild( doc.createElement( nodeName ) ); - display = jQuery.css( temp, "display" ); - - temp.parentNode.removeChild( temp ); - - if ( display === "none" ) { - display = "block"; - } - defaultDisplayMap[ nodeName ] = display; - - return display; -} - -function showHide( elements, show ) { - var display, elem, - values = [], - index = 0, - length = elements.length; - - // Determine new display value for elements that need to change - for ( ; index < length; index++ ) { - elem = elements[ index ]; - if ( !elem.style ) { - continue; - } - - display = elem.style.display; - if ( show ) { - - // Since we force visibility upon cascade-hidden elements, an immediate (and slow) - // check is required in this first loop unless we have a nonempty display value (either - // inline or about-to-be-restored) - if ( display === "none" ) { - values[ index ] = dataPriv.get( elem, "display" ) || null; - if ( !values[ index ] ) { - elem.style.display = ""; - } - } - if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { - values[ index ] = getDefaultDisplay( elem ); - } - } else { - if ( display !== "none" ) { - values[ index ] = "none"; - - // Remember what we're overwriting - dataPriv.set( elem, "display", display ); - } - } - } - - // Set the display of the elements in a second loop to avoid constant reflow - for ( index = 0; index < length; index++ ) { - if ( values[ index ] != null ) { - elements[ index ].style.display = values[ index ]; - } - } - - return elements; -} - -jQuery.fn.extend( { - show: function() { - return showHide( this, true ); - }, - hide: function() { - return showHide( this ); - }, - toggle: function( state ) { - if ( typeof state === "boolean" ) { - return state ? this.show() : this.hide(); - } - - return this.each( function() { - if ( isHiddenWithinTree( this ) ) { - jQuery( this ).show(); - } else { - jQuery( this ).hide(); - } - } ); - } -} ); -var rcheckableType = ( /^(?:checkbox|radio)$/i ); - -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); - -var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); - - - -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // Support: IE <=9 only - // IE <=9 replaces "; - support.option = !!div.lastChild; -} )(); - - -// We have to close these tags to support XHTML (#13200) -var wrapMap = { - - // XHTML parsers do not magically insert elements in the - // same way that tag soup parsers do. So we cannot shorten - // this by omitting or other required elements. - thead: [ 1, "", "
" ], - col: [ 2, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - _default: [ 0, "", "" ] -}; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: IE <=9 only -if ( !support.option ) { - wrapMap.optgroup = wrapMap.option = [ 1, "" ]; -} - - -function getAll( context, tag ) { - - // Support: IE <=9 - 11 only - // Use typeof to avoid zero-argument method invocation on host objects (#15151) - var ret; - - if ( typeof context.getElementsByTagName !== "undefined" ) { - ret = context.getElementsByTagName( tag || "*" ); - - } else if ( typeof context.querySelectorAll !== "undefined" ) { - ret = context.querySelectorAll( tag || "*" ); - - } else { - ret = []; - } - - if ( tag === undefined || tag && nodeName( context, tag ) ) { - return jQuery.merge( [ context ], ret ); - } - - return ret; -} - - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - dataPriv.set( - elems[ i ], - "globalEval", - !refElements || dataPriv.get( refElements[ i ], "globalEval" ) - ); - } -} - - -var rhtml = /<|&#?\w+;/; - -function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, attached, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( toType( elem ) === "object" ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( ( elem = nodes[ i++ ] ) ) { - - // Skip elements already in the context collection (trac-4087) - if ( selection && jQuery.inArray( elem, selection ) > -1 ) { - if ( ignored ) { - ignored.push( elem ); - } - continue; - } - - attached = isAttached( elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( attached ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( ( elem = tmp[ j++ ] ) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; -} - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 - 11+ -// focus() and blur() are asynchronous, except when they are no-op. -// So expect focus to be synchronous when the element is already active, -// and blur to be synchronous when the element is not already active. -// (focus and blur are always synchronous in other supported browsers, -// this just defines when we can count on it). -function expectSync( elem, type ) { - return ( elem === safeActiveElement() ) === ( type === "focus" ); -} - -// Support: IE <=9 only -// Accessing document.activeElement can throw unexpectedly -// https://bugs.jquery.com/ticket/13393 -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Only attach events to objects that accept data - if ( !acceptData( elem ) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = Object.create( null ); - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( nativeEvent ), - - handlers = ( - dataPriv.get( this, "events" ) || Object.create( null ) - )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // If the event is namespaced, then each handler is only invoked if it is - // specially universal or its namespaces are a superset of the event's. - if ( !event.rnamespace || handleObj.namespace === false || - event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - click: { - - // Utilize native event to ensure correct state for checkable inputs - setup: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Claim the first handler - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - // dataPriv.set( el, "click", ... ) - leverageNative( el, "click", returnTrue ); - } - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function( data ) { - - // For mutual compressibility with _default, replace `this` access with a local var. - // `|| data` is dead code meant only to preserve the variable through minification. - var el = this || data; - - // Force setup before triggering a click - if ( rcheckableType.test( el.type ) && - el.click && nodeName( el, "input" ) ) { - - leverageNative( el, "click" ); - } - - // Return non-false to allow normal event-path propagation - return true; - }, - - // For cross-browser consistency, suppress native .click() on links - // Also prevent it if we're currently inside a leveraged native-event stack - _default: function( event ) { - var target = event.target; - return rcheckableType.test( target.type ) && - target.click && nodeName( target, "input" ) && - dataPriv.get( target, "click" ) || - nodeName( target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -// Ensure the presence of an event listener that handles manually-triggered -// synthetic events by interrupting progress until reinvoked in response to -// *native* events that it fires directly, ensuring that state changes have -// already occurred before other listeners are invoked. -function leverageNative( el, type, expectSync ) { - - // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add - if ( !expectSync ) { - if ( dataPriv.get( el, type ) === undefined ) { - jQuery.event.add( el, type, returnTrue ); - } - return; - } - - // Register the controller as a special universal handler for all event namespaces - dataPriv.set( el, type, false ); - jQuery.event.add( el, type, { - namespace: false, - handler: function( event ) { - var notAsync, result, - saved = dataPriv.get( this, type ); - - if ( ( event.isTrigger & 1 ) && this[ type ] ) { - - // Interrupt processing of the outer synthetic .trigger()ed event - // Saved data should be false in such cases, but might be a leftover capture object - // from an async native handler (gh-4350) - if ( !saved.length ) { - - // Store arguments for use when handling the inner native event - // There will always be at least one argument (an event object), so this array - // will not be confused with a leftover capture object. - saved = slice.call( arguments ); - dataPriv.set( this, type, saved ); - - // Trigger the native event and capture its result - // Support: IE <=9 - 11+ - // focus() and blur() are asynchronous - notAsync = expectSync( this, type ); - this[ type ](); - result = dataPriv.get( this, type ); - if ( saved !== result || notAsync ) { - dataPriv.set( this, type, false ); - } else { - result = {}; - } - if ( saved !== result ) { - - // Cancel the outer synthetic event - event.stopImmediatePropagation(); - event.preventDefault(); - return result.value; - } - - // If this is an inner synthetic event for an event with a bubbling surrogate - // (focus or blur), assume that the surrogate already propagated from triggering the - // native event and prevent that from happening again here. - // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the - // bubbling surrogate propagates *after* the non-bubbling base), but that seems - // less bad than duplication. - } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { - event.stopPropagation(); - } - - // If this is a native event triggered above, everything is now in order - // Fire an inner synthetic event with the original arguments - } else if ( saved.length ) { - - // ...and capture the result - dataPriv.set( this, type, { - value: jQuery.event.trigger( - - // Support: IE <=9 - 11+ - // Extend with the prototype to reset the above stopImmediatePropagation() - jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), - saved.slice( 1 ), - this - ) - } ); - - // Abort handling of the native event - event.stopImmediatePropagation(); - } - } - } ); -} - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || Date.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - code: true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { - jQuery.event.special[ type ] = { - - // Utilize native event if possible so blur/focus sequence is correct - setup: function() { - - // Claim the first handler - // dataPriv.set( this, "focus", ... ) - // dataPriv.set( this, "blur", ... ) - leverageNative( this, type, expectSync ); - - // Return false to allow normal processing in the caller - return false; - }, - trigger: function() { - - // Force setup before trigger - leverageNative( this, type ); - - // Return non-false to allow normal event-path propagation - return true; - }, - - delegateType: delegateType - }; -} ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - // Support: IE <=10 - 11, Edge 12 - 13 only - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( elem ).children( "tbody" )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { - elem.type = elem.type.slice( 5 ); - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.get( src ); - events = pdataOld.events; - - if ( events ) { - dataPriv.remove( dest, "handle events" ); - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = flat( args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - valueIsFunction = isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( valueIsFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( valueIsFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl && !node.noModule ) { - jQuery._evalUrl( node.src, { - nonce: node.nonce || node.getAttribute( "nonce" ) - }, doc ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && isAttached( node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html; - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = isAttached( elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - -var swap = function( elem, options, callback ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - -var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - container.style.cssText = "position:absolute;left:-11111px;width:60px;" + - "margin-top:1px;padding:0;border:0"; - div.style.cssText = - "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + - "margin:auto;border:1px;padding:1px;" + - "width:60%;top:1%"; - documentElement.appendChild( container ).appendChild( div ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - - // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 - // Some styles come back with percentage values, even though they shouldn't - div.style.right = "60%"; - pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; - - // Support: IE 9 - 11 only - // Detect misreporting of content dimensions for box-sizing:border-box elements - boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; - - // Support: IE 9 only - // Detect overflow:scroll screwiness (gh-3699) - // Support: Chrome <=64 - // Don't get tricked when zoom affects offsetWidth (gh-4029) - div.style.position = "absolute"; - scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - function roundPixelMeasures( measure ) { - return Math.round( parseFloat( measure ) ); - } - - var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableTrDimensionsVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - jQuery.extend( support, { - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelBoxStyles: function() { - computeStyleTests(); - return pixelBoxStylesVal; - }, - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - }, - scrollboxSize: function() { - computeStyleTests(); - return scrollboxSizeVal; - }, - - // Support: IE 9 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Behavior in IE 9 is more subtle than in newer versions & it passes - // some versions of this test; make sure not to make it pass there! - reliableTrDimensions: function() { - var table, tr, trChild, trStyle; - if ( reliableTrDimensionsVal == null ) { - table = document.createElement( "table" ); - tr = document.createElement( "tr" ); - trChild = document.createElement( "div" ); - - table.style.cssText = "position:absolute;left:-11111px"; - tr.style.height = "1px"; - trChild.style.height = "9px"; - - documentElement - .appendChild( table ) - .appendChild( tr ) - .appendChild( trChild ); - - trStyle = window.getComputedStyle( tr ); - reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; - - documentElement.removeChild( table ); - } - return reliableTrDimensionsVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !isAttached( elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style, - vendorProps = {}; - -// Return a vendor-prefixed property or undefined -function vendorPropName( name ) { - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a potentially-mapped jQuery.cssProps or vendor prefixed property -function finalPropName( name ) { - var final = jQuery.cssProps[ name ] || vendorProps[ name ]; - - if ( final ) { - return final; - } - if ( name in emptyStyle ) { - return name; - } - return vendorProps[ name ] = vendorPropName( name ) || name; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }; - -function setPositiveNumber( _elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { - var i = dimension === "width" ? 1 : 0, - extra = 0, - delta = 0; - - // Adjustment may not be necessary - if ( box === ( isBorderBox ? "border" : "content" ) ) { - return 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin - if ( box === "margin" ) { - delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); - } - - // If we get here with a content-box, we're seeking "padding" or "border" or "margin" - if ( !isBorderBox ) { - - // Add padding - delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // For "border" or "margin", add border - if ( box !== "padding" ) { - delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - - // But still keep track of it otherwise - } else { - extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - - // If we get here with a border-box (content + padding + border), we're seeking "content" or - // "padding" or "margin" - } else { - - // For "content", subtract padding - if ( box === "content" ) { - delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // For "content" or "padding", subtract border - if ( box !== "margin" ) { - delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - // Account for positive content-box scroll gutter when requested by providing computedVal - if ( !isBorderBox && computedVal >= 0 ) { - - // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border - // Assuming integer scroll gutter, subtract the rest and round down - delta += Math.max( 0, Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - computedVal - - delta - - extra - - 0.5 - - // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter - // Use an explicit zero to avoid NaN (gh-3964) - ) ) || 0; - } - - return delta; -} - -function getWidthOrHeight( elem, dimension, extra ) { - - // Start with computed style - var styles = getStyles( elem ), - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). - // Fake content-box until we know it's needed to know the true value. - boxSizingNeeded = !support.boxSizingReliable() || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox, - - val = curCSS( elem, dimension, styles ), - offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); - - // Support: Firefox <=54 - // Return a confounding non-pixel value or feign ignorance, as appropriate. - if ( rnumnonpx.test( val ) ) { - if ( !extra ) { - return val; - } - val = "auto"; - } - - - // Support: IE 9 - 11 only - // Use offsetWidth/offsetHeight for when box sizing is unreliable. - // In those cases, the computed value can be trusted to be border-box. - if ( ( !support.boxSizingReliable() && isBorderBox || - - // Support: IE 10 - 11+, Edge 15 - 18+ - // IE/Edge misreport `getComputedStyle` of table rows with width/height - // set in CSS while `offset*` properties report correct values. - // Interestingly, in some cases IE 9 doesn't suffer from this issue. - !support.reliableTrDimensions() && nodeName( elem, "tr" ) || - - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - val === "auto" || - - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - - // Make sure the element is visible & connected - elem.getClientRects().length ) { - - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Where available, offsetWidth/offsetHeight approximate border box dimensions. - // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the - // retrieved value as a content box dimension. - valueIsBorderBox = offsetProp in elem; - if ( valueIsBorderBox ) { - val = elem[ offsetProp ]; - } - } - - // Normalize "" and auto - val = parseFloat( val ) || 0; - - // Adjust for the element's box model - return ( val + - boxModelAdjustment( - elem, - dimension, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles, - - // Provide the current computed size to request scroll gutter calculation (gh-3589) - val - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "gridArea": true, - "gridColumn": true, - "gridColumnEnd": true, - "gridColumnStart": true, - "gridRow": true, - "gridRowEnd": true, - "gridRowStart": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: {}, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append - // "px" to a few hardcoded values. - if ( type === "number" && !isCustomProp ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( _i, dimension ) { - jQuery.cssHooks[ dimension ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = getStyles( elem ), - - // Only read styles.position if the test has a chance to fail - // to avoid forcing a reflow. - scrollboxSizeBuggy = !support.scrollboxSize() && - styles.position === "absolute", - - // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) - boxSizingNeeded = scrollboxSizeBuggy || extra, - isBorderBox = boxSizingNeeded && - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra ? - boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ) : - 0; - - // Account for unreliable border-box dimensions by comparing offset* to computed and - // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && scrollboxSizeBuggy ) { - subtract -= Math.ceil( - elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - - parseFloat( styles[ dimension ] ) - - boxModelAdjustment( elem, dimension, "border", false, styles ) - - 0.5 - ); - } - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ dimension ] = value; - value = jQuery.css( elem, dimension ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( prefix !== "margin" ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && ( - jQuery.cssHooks[ tween.prop ] || - tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = Date.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 15 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY and Edge just mirrors - // the overflowX value there. - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - result.stop.bind( result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = Date.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -function classesToArray( value ) { - if ( Array.isArray( value ) ) { - return value; - } - if ( typeof value === "string" ) { - return value.match( rnothtmlwhite ) || []; - } - return []; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - classes = classesToArray( value ); - - if ( classes.length ) { - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isValidValue = type === "string" || Array.isArray( value ); - - if ( typeof stateVal === "boolean" && isValidValue ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( isValidValue ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = classesToArray( value ); - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, valueIsFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - valueIsFunction = isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( valueIsFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -support.focusin = "onfocusin" in window; - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - stopPropagationCallback = function( e ) { - e.stopPropagation(); - }; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = lastElement = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - lastElement = cur; - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( - dataPriv.get( cur, "events" ) || Object.create( null ) - )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - - if ( event.isPropagationStopped() ) { - lastElement.addEventListener( type, stopPropagationCallback ); - } - - elem[ type ](); - - if ( event.isPropagationStopped() ) { - lastElement.removeEventListener( type, stopPropagationCallback ); - } - - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - - // Handle: regular nodes (via `this.ownerDocument`), window - // (via `this.document`) & document (via `this`). - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this.document || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = { guid: Date.now() }; - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && toType( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - if ( a == null ) { - return ""; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( _i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() + " " ] = - ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) - .concat( match[ 2 ] ); - } - } - match = responseHeaders[ key.toLowerCase() + " " ]; - } - return match == null ? null : match.join( ", " ); - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 15 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available and should be processed, append data to url - if ( s.data && ( s.processData || typeof s.data === "string" ) ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + - uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Use a noop converter for missing script - if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { - s.converters[ "text script" ] = function() {}; - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( _i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - -jQuery.ajaxPrefilter( function( s ) { - var i; - for ( i in s.headers ) { - if ( i.toLowerCase() === "content-type" ) { - s.contentType = s.headers[ i ] || ""; - } - } -} ); - - -jQuery._evalUrl = function( url, options, doc ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - - // Only evaluate the response if it is successful (gh-4126) - // dataFilter is not invoked for failure responses, so using it instead - // of the default converter is kludgy but it works. - converters: { - "text script": function() {} - }, - dataFilter: function( response ) { - jQuery.globalEval( response, options, doc ); - } - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var htmlIsFunction = isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.ontimeout = - xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain or forced-by-attrs requests - if ( s.crossDomain || s.scriptAttrs ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " +@endif \ No newline at end of file diff --git a/webpack.mix.js b/webpack.mix.js index fee66acfb..f4e0e69d5 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -65,6 +65,7 @@ mix [ "./resources/assets/js/snipeit.js", //this is the actual Snipe-IT JS - require()s bootstrap.js "./resources/assets/js/snipeit_modals.js", + "./node_modules/canvas-confetti/dist/confetti.browser.js", ], "./public/js/build/app.js" //because of compiling - this does not work very well :( ) From 6216b4fc0dcfa2d870197faca6b3b468e5d4aeee Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 15 Aug 2024 11:35:56 +0100 Subject: [PATCH 114/118] Use native browser control for required in addition to the css effect Signed-off-by: snipe --- resources/views/account/profile.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/account/profile.blade.php b/resources/views/account/profile.blade.php index a1d9e2b08..aecd8a4c1 100755 --- a/resources/views/account/profile.blade.php +++ b/resources/views/account/profile.blade.php @@ -20,7 +20,7 @@
- + {!! $errors->first('first_name', '') !!}
From b917489f007dfaca03a9fba6b0a78fa581b78420 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 15 Aug 2024 12:10:41 +0100 Subject: [PATCH 115/118] Corrected string Signed-off-by: snipe --- resources/lang/en-US/admin/locations/message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/en-US/admin/locations/message.php b/resources/lang/en-US/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/en-US/admin/locations/message.php +++ b/resources/lang/en-US/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', From dd458dfa7f13f41e5378d3412344d69ff5a82edf Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 15 Aug 2024 12:21:06 +0100 Subject: [PATCH 116/118] Updated strings Signed-off-by: snipe --- resources/lang/aa-ER/account/general.php | 2 + .../lang/aa-ER/admin/locations/message.php | 2 +- .../lang/aa-ER/admin/settings/general.php | 2 + .../lang/aa-ER/admin/settings/message.php | 3 + resources/lang/aa-ER/button.php | 2 +- resources/lang/aa-ER/general.php | 29 +++--- resources/lang/aa-ER/localizations.php | 4 +- resources/lang/aa-ER/validation.php | 4 + resources/lang/af-ZA/account/general.php | 2 + .../lang/af-ZA/admin/locations/message.php | 2 +- .../lang/af-ZA/admin/settings/general.php | 2 + .../lang/af-ZA/admin/settings/message.php | 3 + resources/lang/af-ZA/button.php | 2 +- resources/lang/af-ZA/general.php | 29 +++--- resources/lang/af-ZA/localizations.php | 4 +- resources/lang/af-ZA/validation.php | 4 + resources/lang/am-ET/account/general.php | 2 + .../lang/am-ET/admin/locations/message.php | 2 +- .../lang/am-ET/admin/settings/general.php | 2 + .../lang/am-ET/admin/settings/message.php | 3 + resources/lang/am-ET/button.php | 2 +- resources/lang/am-ET/general.php | 29 +++--- resources/lang/am-ET/localizations.php | 4 +- resources/lang/am-ET/validation.php | 4 + resources/lang/ar-SA/account/general.php | 2 + .../lang/ar-SA/admin/locations/message.php | 2 +- .../lang/ar-SA/admin/settings/general.php | 2 + .../lang/ar-SA/admin/settings/message.php | 3 + resources/lang/ar-SA/button.php | 2 +- resources/lang/ar-SA/general.php | 29 +++--- resources/lang/ar-SA/localizations.php | 4 +- resources/lang/ar-SA/validation.php | 4 + resources/lang/bg-BG/account/general.php | 2 + .../lang/bg-BG/admin/accessories/message.php | 2 +- .../lang/bg-BG/admin/consumables/general.php | 2 +- .../lang/bg-BG/admin/locations/message.php | 2 +- .../lang/bg-BG/admin/settings/general.php | 2 + .../lang/bg-BG/admin/settings/message.php | 3 + resources/lang/bg-BG/button.php | 2 +- resources/lang/bg-BG/general.php | 17 ++-- resources/lang/bg-BG/localizations.php | 4 +- resources/lang/bg-BG/validation.php | 4 + resources/lang/ca-ES/account/general.php | 2 + .../lang/ca-ES/admin/locations/message.php | 2 +- .../lang/ca-ES/admin/settings/general.php | 2 + .../lang/ca-ES/admin/settings/message.php | 3 + resources/lang/ca-ES/button.php | 2 +- resources/lang/ca-ES/general.php | 29 +++--- resources/lang/ca-ES/localizations.php | 4 +- resources/lang/ca-ES/validation.php | 4 + resources/lang/chr-US/account/general.php | 2 + .../lang/chr-US/admin/locations/message.php | 2 +- .../lang/chr-US/admin/settings/general.php | 2 + .../lang/chr-US/admin/settings/message.php | 3 + resources/lang/chr-US/button.php | 2 +- resources/lang/chr-US/general.php | 29 +++--- resources/lang/chr-US/localizations.php | 4 +- resources/lang/chr-US/validation.php | 4 + resources/lang/cs-CZ/account/general.php | 2 + .../lang/cs-CZ/admin/locations/message.php | 2 +- .../lang/cs-CZ/admin/settings/general.php | 2 + .../lang/cs-CZ/admin/settings/message.php | 3 + resources/lang/cs-CZ/button.php | 2 +- resources/lang/cs-CZ/general.php | 29 +++--- resources/lang/cs-CZ/localizations.php | 4 +- resources/lang/cs-CZ/validation.php | 4 + resources/lang/cy-GB/account/general.php | 2 + .../lang/cy-GB/admin/locations/message.php | 2 +- .../lang/cy-GB/admin/settings/general.php | 2 + .../lang/cy-GB/admin/settings/message.php | 3 + resources/lang/cy-GB/button.php | 2 +- resources/lang/cy-GB/general.php | 29 +++--- resources/lang/cy-GB/localizations.php | 4 +- resources/lang/cy-GB/validation.php | 4 + resources/lang/da-DK/account/general.php | 2 + .../lang/da-DK/admin/locations/message.php | 2 +- .../lang/da-DK/admin/settings/general.php | 2 + .../lang/da-DK/admin/settings/message.php | 3 + resources/lang/da-DK/button.php | 2 +- resources/lang/da-DK/general.php | 29 +++--- resources/lang/da-DK/localizations.php | 4 +- resources/lang/da-DK/validation.php | 4 + resources/lang/de-DE/account/general.php | 2 + .../lang/de-DE/admin/accessories/message.php | 2 +- .../lang/de-DE/admin/locations/message.php | 2 +- .../lang/de-DE/admin/settings/general.php | 4 +- .../lang/de-DE/admin/settings/message.php | 3 + resources/lang/de-DE/button.php | 2 +- resources/lang/de-DE/general.php | 35 +++---- resources/lang/de-DE/localizations.php | 4 +- resources/lang/de-DE/mail.php | 2 +- resources/lang/de-DE/validation.php | 4 + resources/lang/de-if/account/general.php | 2 + .../lang/de-if/admin/locations/message.php | 2 +- .../lang/de-if/admin/settings/general.php | 4 +- .../lang/de-if/admin/settings/message.php | 3 + resources/lang/de-if/button.php | 2 +- resources/lang/de-if/general.php | 37 ++++---- resources/lang/de-if/localizations.php | 4 +- resources/lang/de-if/mail.php | 2 +- resources/lang/de-if/validation.php | 4 + resources/lang/el-GR/account/general.php | 2 + .../lang/el-GR/admin/locations/message.php | 2 +- .../lang/el-GR/admin/settings/general.php | 2 + .../lang/el-GR/admin/settings/message.php | 3 + resources/lang/el-GR/button.php | 2 +- resources/lang/el-GR/general.php | 29 +++--- resources/lang/el-GR/localizations.php | 4 +- resources/lang/el-GR/validation.php | 4 + resources/lang/en-GB/account/general.php | 2 + .../lang/en-GB/admin/locations/message.php | 2 +- .../lang/en-GB/admin/settings/general.php | 2 + .../lang/en-GB/admin/settings/message.php | 3 + resources/lang/en-GB/button.php | 2 +- resources/lang/en-GB/general.php | 29 +++--- resources/lang/en-GB/localizations.php | 4 +- resources/lang/en-GB/validation.php | 4 + resources/lang/en-ID/account/general.php | 2 + .../lang/en-ID/admin/locations/message.php | 2 +- resources/lang/en-ID/admin/models/message.php | 2 +- .../lang/en-ID/admin/settings/general.php | 2 + .../lang/en-ID/admin/settings/message.php | 3 + resources/lang/en-ID/button.php | 2 +- resources/lang/en-ID/general.php | 9 +- resources/lang/en-ID/localizations.php | 4 +- resources/lang/en-ID/validation.php | 4 + resources/lang/en-US/admin/models/message.php | 2 +- .../lang/en-US/admin/settings/message.php | 2 +- resources/lang/en-US/general.php | 8 +- resources/lang/es-CO/account/general.php | 4 +- .../lang/es-CO/admin/accessories/message.php | 2 +- .../lang/es-CO/admin/companies/message.php | 2 +- .../es-CO/admin/custom_fields/general.php | 2 +- .../lang/es-CO/admin/departments/table.php | 2 +- .../lang/es-CO/admin/hardware/general.php | 8 +- .../lang/es-CO/admin/hardware/message.php | 8 +- resources/lang/es-CO/admin/kits/general.php | 10 +- resources/lang/es-CO/admin/labels/message.php | 6 +- .../lang/es-CO/admin/licenses/message.php | 2 +- .../lang/es-CO/admin/locations/message.php | 4 +- .../lang/es-CO/admin/locations/table.php | 8 +- .../lang/es-CO/admin/settings/general.php | 16 ++-- .../lang/es-CO/admin/settings/message.php | 3 + .../lang/es-CO/admin/suppliers/table.php | 2 +- resources/lang/es-CO/admin/users/general.php | 2 +- resources/lang/es-CO/admin/users/message.php | 4 +- resources/lang/es-CO/admin/users/table.php | 8 +- resources/lang/es-CO/auth/message.php | 8 +- resources/lang/es-CO/button.php | 2 +- resources/lang/es-CO/general.php | 69 +++++++------- resources/lang/es-CO/help.php | 2 +- resources/lang/es-CO/localizations.php | 4 +- resources/lang/es-CO/mail.php | 8 +- resources/lang/es-CO/reminders.php | 2 +- resources/lang/es-CO/validation.php | 4 + resources/lang/es-ES/account/general.php | 4 +- .../lang/es-ES/admin/accessories/message.php | 2 +- .../es-ES/admin/custom_fields/general.php | 2 +- .../lang/es-ES/admin/departments/table.php | 2 +- .../lang/es-ES/admin/hardware/general.php | 8 +- .../lang/es-ES/admin/hardware/message.php | 4 +- resources/lang/es-ES/admin/kits/general.php | 10 +- resources/lang/es-ES/admin/labels/message.php | 6 +- .../lang/es-ES/admin/licenses/message.php | 2 +- resources/lang/es-ES/admin/licenses/table.php | 2 +- .../lang/es-ES/admin/locations/message.php | 4 +- .../lang/es-ES/admin/locations/table.php | 8 +- .../lang/es-ES/admin/settings/general.php | 18 ++-- .../lang/es-ES/admin/settings/message.php | 3 + .../lang/es-ES/admin/suppliers/table.php | 2 +- resources/lang/es-ES/admin/users/message.php | 6 +- resources/lang/es-ES/admin/users/table.php | 10 +- resources/lang/es-ES/auth/message.php | 10 +- resources/lang/es-ES/button.php | 2 +- resources/lang/es-ES/general.php | 75 +++++++-------- resources/lang/es-ES/help.php | 2 +- resources/lang/es-ES/localizations.php | 4 +- resources/lang/es-ES/mail.php | 8 +- resources/lang/es-ES/reminders.php | 2 +- resources/lang/es-ES/validation.php | 6 +- resources/lang/es-MX/account/general.php | 4 +- .../lang/es-MX/admin/accessories/message.php | 2 +- .../es-MX/admin/custom_fields/general.php | 4 +- .../lang/es-MX/admin/departments/table.php | 2 +- .../lang/es-MX/admin/hardware/general.php | 8 +- .../lang/es-MX/admin/hardware/message.php | 4 +- resources/lang/es-MX/admin/kits/general.php | 10 +- resources/lang/es-MX/admin/labels/message.php | 6 +- .../lang/es-MX/admin/licenses/message.php | 2 +- resources/lang/es-MX/admin/licenses/table.php | 2 +- .../lang/es-MX/admin/locations/message.php | 4 +- .../lang/es-MX/admin/locations/table.php | 4 +- .../lang/es-MX/admin/settings/general.php | 18 ++-- .../lang/es-MX/admin/settings/message.php | 3 + .../lang/es-MX/admin/suppliers/table.php | 2 +- resources/lang/es-MX/admin/users/message.php | 6 +- resources/lang/es-MX/admin/users/table.php | 10 +- resources/lang/es-MX/auth/message.php | 10 +- resources/lang/es-MX/button.php | 2 +- resources/lang/es-MX/general.php | 73 +++++++-------- resources/lang/es-MX/help.php | 2 +- resources/lang/es-MX/localizations.php | 4 +- resources/lang/es-MX/mail.php | 8 +- resources/lang/es-MX/reminders.php | 2 +- resources/lang/es-MX/validation.php | 4 + resources/lang/es-VE/account/general.php | 4 +- .../lang/es-VE/admin/accessories/message.php | 2 +- .../es-VE/admin/custom_fields/general.php | 2 +- .../lang/es-VE/admin/departments/table.php | 2 +- .../lang/es-VE/admin/hardware/general.php | 6 +- .../lang/es-VE/admin/hardware/message.php | 4 +- resources/lang/es-VE/admin/kits/general.php | 10 +- resources/lang/es-VE/admin/labels/message.php | 6 +- .../lang/es-VE/admin/licenses/message.php | 2 +- .../lang/es-VE/admin/locations/message.php | 4 +- .../lang/es-VE/admin/locations/table.php | 8 +- .../lang/es-VE/admin/settings/general.php | 22 +++-- .../lang/es-VE/admin/settings/message.php | 3 + .../lang/es-VE/admin/suppliers/table.php | 2 +- resources/lang/es-VE/admin/users/message.php | 10 +- resources/lang/es-VE/admin/users/table.php | 16 ++-- resources/lang/es-VE/auth/general.php | 2 +- resources/lang/es-VE/auth/message.php | 8 +- resources/lang/es-VE/button.php | 2 +- resources/lang/es-VE/general.php | 69 +++++++------- resources/lang/es-VE/help.php | 2 +- resources/lang/es-VE/localizations.php | 4 +- resources/lang/es-VE/mail.php | 8 +- resources/lang/es-VE/reminders.php | 2 +- resources/lang/es-VE/validation.php | 4 + resources/lang/et-EE/account/general.php | 2 + .../lang/et-EE/admin/locations/message.php | 2 +- .../lang/et-EE/admin/settings/general.php | 2 + .../lang/et-EE/admin/settings/message.php | 3 + resources/lang/et-EE/button.php | 2 +- resources/lang/et-EE/general.php | 29 +++--- resources/lang/et-EE/localizations.php | 4 +- resources/lang/et-EE/validation.php | 8 +- resources/lang/fa-IR/account/general.php | 2 + .../lang/fa-IR/admin/locations/message.php | 2 +- .../lang/fa-IR/admin/settings/general.php | 2 + .../lang/fa-IR/admin/settings/message.php | 3 + resources/lang/fa-IR/button.php | 2 +- resources/lang/fa-IR/general.php | 33 +++---- resources/lang/fa-IR/localizations.php | 4 +- resources/lang/fa-IR/validation.php | 4 + resources/lang/fi-FI/account/general.php | 2 + .../lang/fi-FI/admin/locations/message.php | 2 +- .../lang/fi-FI/admin/settings/general.php | 2 + .../lang/fi-FI/admin/settings/message.php | 3 + resources/lang/fi-FI/button.php | 2 +- resources/lang/fi-FI/general.php | 29 +++--- resources/lang/fi-FI/localizations.php | 4 +- resources/lang/fi-FI/validation.php | 4 + resources/lang/fil-PH/account/general.php | 2 + .../lang/fil-PH/admin/locations/message.php | 2 +- .../lang/fil-PH/admin/settings/general.php | 2 + .../lang/fil-PH/admin/settings/message.php | 3 + resources/lang/fil-PH/button.php | 2 +- resources/lang/fil-PH/general.php | 29 +++--- resources/lang/fil-PH/localizations.php | 4 +- resources/lang/fil-PH/validation.php | 4 + resources/lang/fr-FR/account/general.php | 10 +- .../lang/fr-FR/admin/accessories/message.php | 2 +- .../lang/fr-FR/admin/consumables/general.php | 2 +- .../lang/fr-FR/admin/consumables/message.php | 2 +- .../fr-FR/admin/custom_fields/message.php | 2 +- resources/lang/fr-FR/admin/hardware/form.php | 2 +- .../lang/fr-FR/admin/hardware/message.php | 4 +- .../lang/fr-FR/admin/licenses/general.php | 6 +- .../lang/fr-FR/admin/licenses/message.php | 4 +- .../lang/fr-FR/admin/locations/message.php | 2 +- resources/lang/fr-FR/admin/models/message.php | 2 +- .../lang/fr-FR/admin/settings/general.php | 30 +++--- .../lang/fr-FR/admin/settings/message.php | 3 + resources/lang/fr-FR/button.php | 16 ++-- resources/lang/fr-FR/general.php | 27 +++--- resources/lang/fr-FR/localizations.php | 4 +- resources/lang/fr-FR/mail.php | 6 +- resources/lang/fr-FR/validation.php | 60 ++++++------ resources/lang/ga-IE/account/general.php | 2 + .../lang/ga-IE/admin/locations/message.php | 2 +- .../lang/ga-IE/admin/settings/general.php | 2 + .../lang/ga-IE/admin/settings/message.php | 3 + resources/lang/ga-IE/button.php | 2 +- resources/lang/ga-IE/general.php | 29 +++--- resources/lang/ga-IE/localizations.php | 4 +- resources/lang/ga-IE/validation.php | 4 + resources/lang/he-IL/account/general.php | 2 + .../lang/he-IL/admin/locations/message.php | 2 +- .../lang/he-IL/admin/settings/general.php | 2 + .../lang/he-IL/admin/settings/message.php | 3 + resources/lang/he-IL/button.php | 2 +- resources/lang/he-IL/general.php | 29 +++--- resources/lang/he-IL/localizations.php | 4 +- resources/lang/he-IL/validation.php | 4 + resources/lang/hr-HR/account/general.php | 2 + .../lang/hr-HR/admin/locations/message.php | 2 +- .../lang/hr-HR/admin/settings/general.php | 2 + .../lang/hr-HR/admin/settings/message.php | 3 + resources/lang/hr-HR/button.php | 2 +- resources/lang/hr-HR/general.php | 29 +++--- resources/lang/hr-HR/localizations.php | 4 +- resources/lang/hr-HR/validation.php | 4 + resources/lang/hu-HU/account/general.php | 2 + .../lang/hu-HU/admin/locations/message.php | 2 +- .../lang/hu-HU/admin/settings/general.php | 2 + .../lang/hu-HU/admin/settings/message.php | 3 + resources/lang/hu-HU/button.php | 2 +- resources/lang/hu-HU/general.php | 29 +++--- resources/lang/hu-HU/localizations.php | 4 +- resources/lang/hu-HU/validation.php | 4 + resources/lang/id-ID/account/general.php | 2 + .../lang/id-ID/admin/locations/message.php | 2 +- .../lang/id-ID/admin/settings/general.php | 2 + .../lang/id-ID/admin/settings/message.php | 3 + resources/lang/id-ID/button.php | 2 +- resources/lang/id-ID/general.php | 29 +++--- resources/lang/id-ID/localizations.php | 4 +- resources/lang/id-ID/validation.php | 4 + resources/lang/is-IS/account/general.php | 2 + .../lang/is-IS/admin/locations/message.php | 2 +- .../lang/is-IS/admin/settings/general.php | 2 + .../lang/is-IS/admin/settings/message.php | 3 + resources/lang/is-IS/button.php | 2 +- resources/lang/is-IS/general.php | 29 +++--- resources/lang/is-IS/localizations.php | 4 +- resources/lang/is-IS/validation.php | 4 + resources/lang/it-IT/account/general.php | 2 + .../lang/it-IT/admin/locations/message.php | 2 +- .../lang/it-IT/admin/settings/general.php | 2 + .../lang/it-IT/admin/settings/message.php | 3 + resources/lang/it-IT/button.php | 2 +- resources/lang/it-IT/general.php | 29 +++--- resources/lang/it-IT/localizations.php | 4 +- resources/lang/it-IT/validation.php | 4 + resources/lang/iu-NU/account/general.php | 2 + .../lang/iu-NU/admin/locations/message.php | 2 +- .../lang/iu-NU/admin/settings/general.php | 2 + .../lang/iu-NU/admin/settings/message.php | 3 + resources/lang/iu-NU/button.php | 2 +- resources/lang/iu-NU/general.php | 29 +++--- resources/lang/iu-NU/localizations.php | 4 +- resources/lang/iu-NU/validation.php | 4 + resources/lang/ja-JP/account/general.php | 2 + .../lang/ja-JP/admin/locations/message.php | 2 +- .../lang/ja-JP/admin/settings/general.php | 2 + .../lang/ja-JP/admin/settings/message.php | 3 + resources/lang/ja-JP/button.php | 2 +- resources/lang/ja-JP/general.php | 29 +++--- resources/lang/ja-JP/localizations.php | 4 +- resources/lang/ja-JP/validation.php | 4 + resources/lang/km-KH/account/general.php | 2 + .../lang/km-KH/admin/locations/message.php | 2 +- .../lang/km-KH/admin/settings/general.php | 2 + .../lang/km-KH/admin/settings/message.php | 3 + resources/lang/km-KH/button.php | 2 +- resources/lang/km-KH/general.php | 29 +++--- resources/lang/km-KH/localizations.php | 4 +- resources/lang/km-KH/validation.php | 4 + resources/lang/ko-KR/account/general.php | 2 + .../lang/ko-KR/admin/locations/message.php | 2 +- .../lang/ko-KR/admin/settings/general.php | 2 + .../lang/ko-KR/admin/settings/message.php | 3 + resources/lang/ko-KR/button.php | 2 +- resources/lang/ko-KR/general.php | 29 +++--- resources/lang/ko-KR/localizations.php | 4 +- resources/lang/ko-KR/validation.php | 4 + resources/lang/lt-LT/account/general.php | 2 + .../lt-LT/admin/depreciations/message.php | 2 +- resources/lang/lt-LT/admin/groups/message.php | 2 +- resources/lang/lt-LT/admin/groups/table.php | 2 +- resources/lang/lt-LT/admin/hardware/form.php | 2 +- .../lang/lt-LT/admin/hardware/general.php | 14 +-- .../lang/lt-LT/admin/locations/message.php | 2 +- .../lang/lt-LT/admin/locations/table.php | 2 +- .../lang/lt-LT/admin/settings/general.php | 6 +- .../lang/lt-LT/admin/settings/message.php | 3 + resources/lang/lt-LT/admin/users/general.php | 4 +- resources/lang/lt-LT/admin/users/table.php | 2 +- resources/lang/lt-LT/button.php | 6 +- resources/lang/lt-LT/general.php | 91 ++++++++++--------- resources/lang/lt-LT/localizations.php | 4 +- resources/lang/lt-LT/mail.php | 16 ++-- resources/lang/lt-LT/reminders.php | 2 +- resources/lang/lt-LT/table.php | 2 +- resources/lang/lt-LT/validation.php | 4 + resources/lang/lv-LV/account/general.php | 2 + .../lang/lv-LV/admin/locations/message.php | 2 +- .../lang/lv-LV/admin/settings/general.php | 2 + .../lang/lv-LV/admin/settings/message.php | 3 + resources/lang/lv-LV/button.php | 2 +- resources/lang/lv-LV/general.php | 29 +++--- resources/lang/lv-LV/localizations.php | 4 +- resources/lang/lv-LV/validation.php | 4 + resources/lang/mi-NZ/account/general.php | 2 + .../lang/mi-NZ/admin/locations/message.php | 2 +- .../lang/mi-NZ/admin/settings/general.php | 2 + .../lang/mi-NZ/admin/settings/message.php | 3 + resources/lang/mi-NZ/button.php | 2 +- resources/lang/mi-NZ/general.php | 29 +++--- resources/lang/mi-NZ/localizations.php | 4 +- resources/lang/mi-NZ/validation.php | 4 + resources/lang/mk-MK/account/general.php | 2 + .../lang/mk-MK/admin/locations/message.php | 2 +- .../lang/mk-MK/admin/settings/general.php | 2 + .../lang/mk-MK/admin/settings/message.php | 3 + resources/lang/mk-MK/button.php | 2 +- resources/lang/mk-MK/general.php | 29 +++--- resources/lang/mk-MK/localizations.php | 4 +- resources/lang/mk-MK/validation.php | 4 + resources/lang/ml-IN/account/general.php | 2 + .../lang/ml-IN/admin/locations/message.php | 2 +- .../lang/ml-IN/admin/settings/general.php | 2 + .../lang/ml-IN/admin/settings/message.php | 3 + resources/lang/ml-IN/button.php | 2 +- resources/lang/ml-IN/general.php | 29 +++--- resources/lang/ml-IN/localizations.php | 4 +- resources/lang/ml-IN/validation.php | 4 + resources/lang/mn-MN/account/general.php | 2 + .../lang/mn-MN/admin/locations/message.php | 2 +- .../lang/mn-MN/admin/settings/general.php | 2 + .../lang/mn-MN/admin/settings/message.php | 3 + resources/lang/mn-MN/button.php | 2 +- resources/lang/mn-MN/general.php | 29 +++--- resources/lang/mn-MN/localizations.php | 4 +- resources/lang/mn-MN/validation.php | 4 + resources/lang/ms-MY/account/general.php | 2 + .../lang/ms-MY/admin/locations/message.php | 2 +- .../lang/ms-MY/admin/settings/general.php | 2 + .../lang/ms-MY/admin/settings/message.php | 3 + resources/lang/ms-MY/button.php | 2 +- resources/lang/ms-MY/general.php | 29 +++--- resources/lang/ms-MY/localizations.php | 4 +- resources/lang/ms-MY/validation.php | 4 + resources/lang/nb-NO/account/general.php | 2 + .../lang/nb-NO/admin/locations/message.php | 2 +- .../lang/nb-NO/admin/settings/general.php | 2 + .../lang/nb-NO/admin/settings/message.php | 3 + resources/lang/nb-NO/button.php | 2 +- resources/lang/nb-NO/general.php | 29 +++--- resources/lang/nb-NO/localizations.php | 4 +- resources/lang/nb-NO/validation.php | 4 + resources/lang/nl-NL/account/general.php | 2 + .../lang/nl-NL/admin/locations/message.php | 2 +- .../lang/nl-NL/admin/settings/general.php | 2 + .../lang/nl-NL/admin/settings/message.php | 3 + resources/lang/nl-NL/button.php | 2 +- resources/lang/nl-NL/general.php | 29 +++--- resources/lang/nl-NL/localizations.php | 4 +- resources/lang/nl-NL/validation.php | 4 + resources/lang/nn-NO/account/general.php | 2 + .../lang/nn-NO/admin/locations/message.php | 2 +- .../lang/nn-NO/admin/settings/general.php | 2 + .../lang/nn-NO/admin/settings/message.php | 3 + resources/lang/nn-NO/button.php | 2 +- resources/lang/nn-NO/general.php | 29 +++--- resources/lang/nn-NO/localizations.php | 4 +- resources/lang/nn-NO/validation.php | 4 + resources/lang/no-NO/account/general.php | 2 + .../lang/no-NO/admin/locations/message.php | 2 +- .../lang/no-NO/admin/settings/general.php | 2 + .../lang/no-NO/admin/settings/message.php | 3 + resources/lang/no-NO/button.php | 2 +- resources/lang/no-NO/general.php | 29 +++--- resources/lang/no-NO/localizations.php | 4 +- resources/lang/no-NO/validation.php | 4 + resources/lang/pl-PL/account/general.php | 8 +- .../lang/pl-PL/admin/hardware/message.php | 8 +- .../lang/pl-PL/admin/locations/message.php | 2 +- resources/lang/pl-PL/admin/models/message.php | 2 +- .../lang/pl-PL/admin/settings/general.php | 2 + .../lang/pl-PL/admin/settings/message.php | 3 + resources/lang/pl-PL/button.php | 2 +- resources/lang/pl-PL/general.php | 27 +++--- resources/lang/pl-PL/localizations.php | 4 +- resources/lang/pl-PL/validation.php | 4 + resources/lang/pt-BR/account/general.php | 2 + .../lang/pt-BR/admin/locations/message.php | 2 +- .../lang/pt-BR/admin/settings/general.php | 2 + .../lang/pt-BR/admin/settings/message.php | 3 + resources/lang/pt-BR/button.php | 8 +- resources/lang/pt-BR/general.php | 23 ++--- resources/lang/pt-BR/localizations.php | 4 +- resources/lang/pt-BR/validation.php | 18 ++-- resources/lang/pt-PT/account/general.php | 2 + .../lang/pt-PT/admin/locations/message.php | 2 +- .../lang/pt-PT/admin/settings/general.php | 2 + .../lang/pt-PT/admin/settings/message.php | 3 + resources/lang/pt-PT/button.php | 2 +- resources/lang/pt-PT/general.php | 29 +++--- resources/lang/pt-PT/localizations.php | 4 +- resources/lang/pt-PT/validation.php | 4 + resources/lang/ro-RO/account/general.php | 2 + .../lang/ro-RO/admin/locations/message.php | 2 +- .../lang/ro-RO/admin/settings/general.php | 2 + .../lang/ro-RO/admin/settings/message.php | 3 + resources/lang/ro-RO/button.php | 2 +- resources/lang/ro-RO/general.php | 29 +++--- resources/lang/ro-RO/localizations.php | 4 +- resources/lang/ro-RO/validation.php | 4 + resources/lang/ru-RU/account/general.php | 2 + .../lang/ru-RU/admin/locations/message.php | 2 +- .../lang/ru-RU/admin/settings/general.php | 2 + .../lang/ru-RU/admin/settings/message.php | 3 + resources/lang/ru-RU/button.php | 2 +- resources/lang/ru-RU/general.php | 29 +++--- resources/lang/ru-RU/localizations.php | 4 +- resources/lang/ru-RU/validation.php | 4 + resources/lang/si-LK/account/general.php | 2 + .../lang/si-LK/admin/locations/message.php | 2 +- .../lang/si-LK/admin/settings/general.php | 2 + .../lang/si-LK/admin/settings/message.php | 3 + resources/lang/si-LK/button.php | 2 +- resources/lang/si-LK/general.php | 31 ++++--- resources/lang/si-LK/localizations.php | 4 +- resources/lang/si-LK/validation.php | 4 + resources/lang/sk-SK/account/general.php | 2 + .../lang/sk-SK/admin/locations/message.php | 2 +- .../lang/sk-SK/admin/settings/general.php | 2 + .../lang/sk-SK/admin/settings/message.php | 3 + resources/lang/sk-SK/button.php | 2 +- resources/lang/sk-SK/general.php | 29 +++--- resources/lang/sk-SK/localizations.php | 4 +- resources/lang/sk-SK/validation.php | 4 + resources/lang/sl-SI/account/general.php | 2 + .../lang/sl-SI/admin/locations/message.php | 2 +- .../lang/sl-SI/admin/settings/general.php | 2 + .../lang/sl-SI/admin/settings/message.php | 3 + resources/lang/sl-SI/button.php | 2 +- resources/lang/sl-SI/general.php | 29 +++--- resources/lang/sl-SI/localizations.php | 4 +- resources/lang/sl-SI/validation.php | 4 + resources/lang/so-SO/account/general.php | 2 + .../lang/so-SO/admin/locations/message.php | 2 +- .../lang/so-SO/admin/settings/general.php | 2 + .../lang/so-SO/admin/settings/message.php | 3 + resources/lang/so-SO/button.php | 2 +- resources/lang/so-SO/general.php | 29 +++--- resources/lang/so-SO/localizations.php | 4 +- resources/lang/so-SO/validation.php | 4 + resources/lang/sq-AL/account/general.php | 2 + .../lang/sq-AL/admin/locations/message.php | 2 +- .../lang/sq-AL/admin/settings/general.php | 2 + .../lang/sq-AL/admin/settings/message.php | 3 + resources/lang/sq-AL/button.php | 2 +- resources/lang/sq-AL/general.php | 29 +++--- resources/lang/sq-AL/localizations.php | 4 +- resources/lang/sq-AL/validation.php | 4 + resources/lang/sr-CS/account/general.php | 2 + .../lang/sr-CS/admin/locations/message.php | 2 +- .../lang/sr-CS/admin/settings/general.php | 2 + .../lang/sr-CS/admin/settings/message.php | 3 + resources/lang/sr-CS/button.php | 2 +- resources/lang/sr-CS/general.php | 17 ++-- resources/lang/sr-CS/localizations.php | 4 +- resources/lang/sr-CS/validation.php | 4 + resources/lang/sv-SE/account/general.php | 2 + .../lang/sv-SE/admin/locations/message.php | 2 +- .../lang/sv-SE/admin/settings/general.php | 2 + .../lang/sv-SE/admin/settings/message.php | 3 + resources/lang/sv-SE/button.php | 2 +- resources/lang/sv-SE/general.php | 29 +++--- resources/lang/sv-SE/localizations.php | 4 +- resources/lang/sv-SE/validation.php | 4 + resources/lang/ta-IN/account/general.php | 2 + .../lang/ta-IN/admin/locations/message.php | 2 +- .../lang/ta-IN/admin/settings/general.php | 2 + .../lang/ta-IN/admin/settings/message.php | 3 + resources/lang/ta-IN/button.php | 2 +- resources/lang/ta-IN/general.php | 29 +++--- resources/lang/ta-IN/localizations.php | 4 +- resources/lang/ta-IN/validation.php | 4 + resources/lang/th-TH/account/general.php | 2 + .../lang/th-TH/admin/accessories/message.php | 6 +- .../lang/th-TH/admin/categories/general.php | 4 +- .../lang/th-TH/admin/categories/message.php | 2 +- .../lang/th-TH/admin/companies/table.php | 4 +- .../lang/th-TH/admin/components/general.php | 2 +- .../lang/th-TH/admin/locations/message.php | 2 +- .../lang/th-TH/admin/settings/general.php | 2 + .../lang/th-TH/admin/settings/message.php | 3 + resources/lang/th-TH/button.php | 2 +- resources/lang/th-TH/general.php | 29 +++--- resources/lang/th-TH/localizations.php | 4 +- resources/lang/th-TH/validation.php | 4 + resources/lang/tl-PH/account/general.php | 2 + .../lang/tl-PH/admin/locations/message.php | 2 +- .../lang/tl-PH/admin/settings/general.php | 2 + .../lang/tl-PH/admin/settings/message.php | 3 + resources/lang/tl-PH/button.php | 2 +- resources/lang/tl-PH/general.php | 29 +++--- resources/lang/tl-PH/localizations.php | 4 +- resources/lang/tl-PH/validation.php | 4 + resources/lang/tr-TR/account/general.php | 2 + .../lang/tr-TR/admin/licenses/message.php | 2 +- .../lang/tr-TR/admin/locations/message.php | 2 +- .../lang/tr-TR/admin/settings/general.php | 4 +- .../lang/tr-TR/admin/settings/message.php | 3 + resources/lang/tr-TR/button.php | 2 +- resources/lang/tr-TR/general.php | 29 +++--- resources/lang/tr-TR/localizations.php | 4 +- resources/lang/tr-TR/mail.php | 2 +- resources/lang/tr-TR/validation.php | 4 + resources/lang/uk-UA/account/general.php | 13 ++- .../lang/uk-UA/admin/locations/message.php | 2 +- .../lang/uk-UA/admin/settings/general.php | 2 + .../lang/uk-UA/admin/settings/message.php | 3 + resources/lang/uk-UA/button.php | 2 +- resources/lang/uk-UA/general.php | 29 +++--- resources/lang/uk-UA/localizations.php | 4 +- resources/lang/uk-UA/validation.php | 4 + resources/lang/ur-PK/account/general.php | 2 + .../lang/ur-PK/admin/locations/message.php | 2 +- .../lang/ur-PK/admin/settings/general.php | 2 + .../lang/ur-PK/admin/settings/message.php | 3 + resources/lang/ur-PK/button.php | 2 +- resources/lang/ur-PK/general.php | 29 +++--- resources/lang/ur-PK/localizations.php | 4 +- resources/lang/ur-PK/validation.php | 4 + resources/lang/vi-VN/account/general.php | 2 + .../lang/vi-VN/admin/locations/message.php | 2 +- .../lang/vi-VN/admin/settings/general.php | 2 + .../lang/vi-VN/admin/settings/message.php | 3 + resources/lang/vi-VN/button.php | 2 +- resources/lang/vi-VN/general.php | 29 +++--- resources/lang/vi-VN/localizations.php | 4 +- resources/lang/vi-VN/validation.php | 4 + resources/lang/zh-CN/account/general.php | 2 + .../lang/zh-CN/admin/locations/message.php | 2 +- .../lang/zh-CN/admin/settings/general.php | 2 + .../lang/zh-CN/admin/settings/message.php | 3 + resources/lang/zh-CN/button.php | 2 +- resources/lang/zh-CN/general.php | 15 +-- resources/lang/zh-CN/localizations.php | 4 +- resources/lang/zh-CN/validation.php | 4 + resources/lang/zh-HK/account/general.php | 2 + .../lang/zh-HK/admin/locations/message.php | 2 +- .../lang/zh-HK/admin/settings/general.php | 2 + .../lang/zh-HK/admin/settings/message.php | 3 + resources/lang/zh-HK/button.php | 2 +- resources/lang/zh-HK/general.php | 29 +++--- resources/lang/zh-HK/localizations.php | 4 +- resources/lang/zh-HK/validation.php | 4 + resources/lang/zh-TW/account/general.php | 2 + .../lang/zh-TW/admin/locations/message.php | 2 +- .../lang/zh-TW/admin/settings/general.php | 2 + .../lang/zh-TW/admin/settings/message.php | 3 + resources/lang/zh-TW/button.php | 2 +- resources/lang/zh-TW/general.php | 37 ++++---- resources/lang/zh-TW/localizations.php | 4 +- resources/lang/zh-TW/validation.php | 4 + resources/lang/zu-ZA/account/general.php | 2 + .../lang/zu-ZA/admin/locations/message.php | 2 +- .../lang/zu-ZA/admin/settings/general.php | 2 + .../lang/zu-ZA/admin/settings/message.php | 3 + resources/lang/zu-ZA/button.php | 2 +- resources/lang/zu-ZA/general.php | 29 +++--- resources/lang/zu-ZA/localizations.php | 4 +- resources/lang/zu-ZA/validation.php | 4 + 660 files changed, 2599 insertions(+), 1636 deletions(-) diff --git a/resources/lang/aa-ER/account/general.php b/resources/lang/aa-ER/account/general.php index 7d04f1acb..5db6716fb 100644 --- a/resources/lang/aa-ER/account/general.php +++ b/resources/lang/aa-ER/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'crwdns12270:0crwdne12270:0', 'profile_updated' => 'crwdns12202:0crwdne12202:0', 'no_tokens' => 'crwdns12318:0crwdne12318:0', + 'enable_sounds' => 'crwdns12658:0crwdne12658:0', + 'enable_confetti' => 'crwdns12664:0crwdne12664:0', ); diff --git a/resources/lang/aa-ER/admin/locations/message.php b/resources/lang/aa-ER/admin/locations/message.php index 588a0d4d8..88117472b 100644 --- a/resources/lang/aa-ER/admin/locations/message.php +++ b/resources/lang/aa-ER/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'crwdns650:0crwdne650:0', - 'assoc_users' => 'crwdns12272:0crwdne12272:0', + 'assoc_users' => 'crwdns12666:0crwdne12666:0', 'assoc_assets' => 'crwdns1404:0crwdne1404:0', 'assoc_child_loc' => 'crwdns1405:0crwdne1405:0', 'assigned_assets' => 'crwdns11179:0crwdne11179:0', diff --git a/resources/lang/aa-ER/admin/settings/general.php b/resources/lang/aa-ER/admin/settings/general.php index 11cc3850b..6dba9d27b 100644 --- a/resources/lang/aa-ER/admin/settings/general.php +++ b/resources/lang/aa-ER/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'crwdns11403:0crwdne11403:0', 'webhook_integration_help_button' => 'crwdns11405:0crwdne11405:0', 'webhook_test_help' => 'crwdns11407:0crwdne11407:0', + 'shortcuts_enabled' => 'crwdns12654:0crwdne12654:0', + 'shortcuts_help_text' => 'crwdns12656:0crwdne12656:0', 'snipe_version' => 'crwdns1266:0crwdne1266:0', 'support_footer' => 'crwdns1991:0crwdne1991:0', 'support_footer_help' => 'crwdns1992:0crwdne1992:0', diff --git a/resources/lang/aa-ER/admin/settings/message.php b/resources/lang/aa-ER/admin/settings/message.php index 5e88ef090..389161344 100644 --- a/resources/lang/aa-ER/admin/settings/message.php +++ b/resources/lang/aa-ER/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'crwdns6709:0crwdne6709:0', 'restore_confirm' => 'crwdns6711:0crwdne6711:0' ], + 'restore' => [ + 'success' => 'crwdns12648:0crwdne12648:0' + ], 'purge' => [ 'error' => 'crwdns1615:0crwdne1615:0', 'validation_failed' => 'crwdns1616:0crwdne1616:0', diff --git a/resources/lang/aa-ER/button.php b/resources/lang/aa-ER/button.php index d15ed2765..9284fc6a7 100644 --- a/resources/lang/aa-ER/button.php +++ b/resources/lang/aa-ER/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'crwdns12598:0crwdne12598:0', 'edit' => 'crwdns12600:0crwdne12600:0', 'delete' => 'crwdns12602:0crwdne12602:0', - 'restore' => 'crwdns12604:0crwdne12604:0', + 'restore' => 'crwdns12646:0crwdne12646:0', 'create' => 'crwdns12606:0crwdne12606:0', 'checkout' => 'crwdns12608:0crwdne12608:0', 'checkin' => 'crwdns12610:0crwdne12610:0', diff --git a/resources/lang/aa-ER/general.php b/resources/lang/aa-ER/general.php index dc33fad2a..f61d83793 100644 --- a/resources/lang/aa-ER/general.php +++ b/resources/lang/aa-ER/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'crwdns1327:0crwdne1327:0', 'country' => 'crwdns1039:0crwdne1039:0', 'could_not_restore' => 'crwdns11894:0:item_type:crwdne11894:0', - 'not_deleted' => 'crwdns11896:0crwdne11896:0', + 'not_deleted' => 'crwdns12616:0crwdne12616:0', 'create' => 'crwdns1040:0crwdne1040:0', 'created' => 'crwdns1773:0crwdne1773:0', 'created_asset' => 'crwdns1041:0crwdne1041:0', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'crwdns1828:0crwdne1828:0', 'delete' => 'crwdns1046:0crwdne1046:0', 'delete_confirm' => 'crwdns2020:0crwdne2020:0', - 'delete_confirm_no_undo' => 'crwdns11599:0crwdne11599:0', + 'delete_confirm_no_undo' => 'crwdns12618:0crwdne12618:0', 'deleted' => 'crwdns1047:0crwdne1047:0', 'delete_seats' => 'crwdns1430:0crwdne1430:0', 'deletion_failed' => 'crwdns6117:0crwdne6117:0', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'crwdns5952:0crwdne5952:0', 'firstinitial.lastname' => 'crwdns5954:0crwdne5954:0', 'firstnamelastinitial' => 'crwdns5956:0crwdne5956:0', - 'lastnamefirstname' => 'crwdns12266:0crwdne12266:0', + 'lastnamefirstname' => 'crwdns12620:0crwdne12620:0', 'first_name' => 'crwdns1053:0crwdne1053:0', 'first_name_format' => 'crwdns1647:0crwdne1647:0', 'files' => 'crwdns1996:0crwdne1996:0', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'crwdns1057:0crwdne1057:0', 'include_deleted' => 'crwdns10518:0crwdne10518:0', 'image_upload' => 'crwdns1058:0crwdne1058:0', - 'filetypes_accepted_help' => 'crwdns6129:0crwdne6129:0', - 'filetypes_size_help' => 'crwdns6131:0crwdne6131:0', - 'image_filetypes_help' => 'crwdns12284:0crwdne12284:0', + 'filetypes_accepted_help' => 'crwdns12622:0crwdne12622:0', + 'filetypes_size_help' => 'crwdns12624:0crwdne12624:0', + 'image_filetypes_help' => 'crwdns12626:0crwdne12626:0', 'unaccepted_image_type' => 'crwdns11365:0crwdne11365:0', 'import' => 'crwdns1411:0crwdne1411:0', 'import_this_file' => 'crwdns11922:0crwdne11922:0', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'crwdns12172:0crwdne12172:0', 'licenses' => 'crwdns1062:0crwdne1062:0', 'list_all' => 'crwdns1063:0crwdne1063:0', - 'loading' => 'crwdns6135:0crwdne6135:0', + 'loading' => 'crwdns12628:0crwdne12628:0', 'lock_passwords' => 'crwdns5974:0crwdne5974:0', 'feature_disabled' => 'crwdns1774:0crwdne1774:0', 'location' => 'crwdns1064:0crwdne1064:0', @@ -193,7 +193,7 @@ return [ 'logout' => 'crwdns1066:0crwdne1066:0', 'lookup_by_tag' => 'crwdns1648:0crwdne1648:0', 'maintenances' => 'crwdns1998:0crwdne1998:0', - 'manage_api_keys' => 'crwdns6137:0crwdne6137:0', + 'manage_api_keys' => 'crwdns12630:0crwdne12630:0', 'manufacturer' => 'crwdns1067:0crwdne1067:0', 'manufacturers' => 'crwdns1068:0crwdne1068:0', 'markdown' => 'crwdns1574:0crwdne1574:0', @@ -254,7 +254,7 @@ return [ 'select_all' => 'crwdns6155:0crwdne6155:0', 'search' => 'crwdns1290:0crwdne1290:0', 'select_category' => 'crwdns1663:0crwdne1663:0', - 'select_datasource' => 'crwdns12166:0crwdne12166:0', + 'select_datasource' => 'crwdns12632:0crwdne12632:0', 'select_department' => 'crwdns1880:0crwdne1880:0', 'select_depreciation' => 'crwdns1282:0crwdne1282:0', 'select_location' => 'crwdns1283:0crwdne1283:0', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'crwdns6784:0crwdne6784:0', 'skin' => 'crwdns2002:0crwdne2002:0', 'webhook_msg_note' => 'crwdns11483:0crwdne11483:0', - 'webhook_test_msg' => 'crwdns11371:0crwdne11371:0', + 'webhook_test_msg' => 'crwdns12634:0crwdne12634:0', 'some_features_disabled' => 'crwdns1669:0crwdne1669:0', 'site_name' => 'crwdns1086:0crwdne1086:0', 'state' => 'crwdns1087:0crwdne1087:0', 'status_labels' => 'crwdns1088:0crwdne1088:0', + 'status_label' => 'crwdns12662:0crwdne12662:0', 'status' => 'crwdns1089:0crwdne1089:0', 'accept_eula' => 'crwdns6786:0crwdne6786:0', 'supplier' => 'crwdns1833:0crwdne1833:0', @@ -339,16 +340,16 @@ return [ 'view_all' => 'crwdns6165:0crwdne6165:0', 'hide_deleted' => 'crwdns6167:0crwdne6167:0', 'email' => 'crwdns6169:0crwdne6169:0', - 'do_not_change' => 'crwdns6171:0crwdne6171:0', - 'bug_report' => 'crwdns6173:0crwdne6173:0', + 'do_not_change' => 'crwdns12636:0crwdne12636:0', + 'bug_report' => 'crwdns12638:0crwdne12638:0', 'user_manual' => 'crwdns6175:0crwdne6175:0', 'setup_step_1' => 'crwdns6177:0crwdne6177:0', 'setup_step_2' => 'crwdns6179:0crwdne6179:0', 'setup_step_3' => 'crwdns6181:0crwdne6181:0', 'setup_step_4' => 'crwdns6183:0crwdne6183:0', 'setup_config_check' => 'crwdns6185:0crwdne6185:0', - 'setup_create_database' => 'crwdns6187:0crwdne6187:0', - 'setup_create_admin' => 'crwdns6189:0crwdne6189:0', + 'setup_create_database' => 'crwdns12640:0crwdne12640:0', + 'setup_create_admin' => 'crwdns12642:0crwdne12642:0', 'setup_done' => 'crwdns6191:0crwdne6191:0', 'bulk_edit_about_to' => 'crwdns6193:0crwdne6193:0', 'checked_out' => 'crwdns6195:0crwdne6195:0', diff --git a/resources/lang/aa-ER/localizations.php b/resources/lang/aa-ER/localizations.php index 0e695f7a7..c407b5385 100644 --- a/resources/lang/aa-ER/localizations.php +++ b/resources/lang/aa-ER/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'crwdns11986:0crwdne11986:0', 'mi-NZ'=> 'crwdns11988:0crwdne11988:0', 'mn-MN'=> 'crwdns11990:0crwdne11990:0', - 'no-NO'=> 'crwdns11992:0crwdne11992:0', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'crwdns12644:0crwdne12644:0', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'crwdns11994:0crwdne11994:0', 'pl-PL'=> 'crwdns11996:0crwdne11996:0', 'pt-PT'=> 'crwdns10634:0crwdne10634:0', diff --git a/resources/lang/aa-ER/validation.php b/resources/lang/aa-ER/validation.php index 0859bc66c..06657a831 100644 --- a/resources/lang/aa-ER/validation.php +++ b/resources/lang/aa-ER/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'crwdns12504:0crwdne12504:0', 'uncompromised' => 'crwdns12506:0crwdne12506:0', ], + 'percent' => 'crwdns12660:0crwdne12660:0', + 'present' => 'crwdns1936:0crwdne1936:0', 'present_if' => 'crwdns12508:0crwdne12508:0', 'present_unless' => 'crwdns12510:0crwdne12510:0', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'crwdns1946:0crwdne1946:0', 'dumbpwd' => 'crwdns1947:0crwdne1947:0', 'statuslabel_type' => 'crwdns1948:0crwdne1948:0', + 'custom_field_not_found' => 'crwdns12650:0crwdne12650:0', + 'custom_field_not_found_on_model' => 'crwdns12652:0crwdne12652:0', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/af-ZA/account/general.php b/resources/lang/af-ZA/account/general.php index 1cef87b07..557454678 100644 --- a/resources/lang/af-ZA/account/general.php +++ b/resources/lang/af-ZA/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/af-ZA/admin/locations/message.php b/resources/lang/af-ZA/admin/locations/message.php index dd41bba32..a10563a7c 100644 --- a/resources/lang/af-ZA/admin/locations/message.php +++ b/resources/lang/af-ZA/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Ligging bestaan ​​nie.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Hierdie ligging is tans geassosieer met ten minste een bate en kan nie uitgevee word nie. Dateer asseblief jou bates op om nie meer hierdie ligging te verwys nie en probeer weer.', 'assoc_child_loc' => 'Hierdie ligging is tans die ouer van ten minste een kind se plek en kan nie uitgevee word nie. Werk asseblief jou liggings by om nie meer hierdie ligging te verwys nie en probeer weer.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/af-ZA/admin/settings/general.php b/resources/lang/af-ZA/admin/settings/general.php index da9893920..bec29534e 100644 --- a/resources/lang/af-ZA/admin/settings/general.php +++ b/resources/lang/af-ZA/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT-weergawe', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/af-ZA/admin/settings/message.php b/resources/lang/af-ZA/admin/settings/message.php index 8f41acf3f..198e05497 100644 --- a/resources/lang/af-ZA/admin/settings/message.php +++ b/resources/lang/af-ZA/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => '\'N Fout het voorgekom tydens suiwering.', 'validation_failed' => 'Jou skoonmaakbevestiging is verkeerd. Tik asseblief die woord "DELETE" in die bevestigingsboks.', diff --git a/resources/lang/af-ZA/button.php b/resources/lang/af-ZA/button.php index f7e1690d1..a6b51214f 100644 --- a/resources/lang/af-ZA/button.php +++ b/resources/lang/af-ZA/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/af-ZA/general.php b/resources/lang/af-ZA/general.php index 2496fe7f1..f8d7d12cf 100644 --- a/resources/lang/af-ZA/general.php +++ b/resources/lang/af-ZA/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'land', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Skep nuwe', 'created' => 'Item geskep', 'created_asset' => 'geskep bate', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Hierdie program word uitgevoer in die produksiemodus met debugging aangeskakel. Dit kan sensitiewe data blootstel indien u aansoek vir die buitewêreld toeganklik is. Deaktiveer debug-modus deur die APP_DEBUG-waarde in jou .env-lêer te stel na false.', 'delete' => 'verwyder', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'geskrap', 'delete_seats' => 'Plekke verwyder', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Eerste naam', 'first_name_format' => 'Voornaam (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Vee prent uit', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Laai prent op', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'invoer', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'lisensies', 'list_all' => 'Lys almal', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Hierdie funksie is afgeskakel vir die demo-installasie.', 'location' => 'plek', @@ -193,7 +193,7 @@ return [ 'logout' => 'Teken uit', 'lookup_by_tag' => 'Opsoek deur Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'vervaardiger', 'manufacturers' => 'vervaardigers', 'markdown' => 'Hierdie veld laat Gitub-gegeurde markdown toe.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Soek', 'select_category' => 'Kies \'n kategorie', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Kies \'n Departement', 'select_depreciation' => 'Kies \'n waardeverminderingstipe', 'select_location' => 'Kies \'n plek', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Sommige funksies is afgeskakel vir hierdie installasie.', 'site_name' => 'Site Naam', 'state' => 'staat', 'status_labels' => 'Status etikette', + 'status_label' => 'Status Label', 'status' => 'status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'verskaffer', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'e-pos', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Gekontroleer', diff --git a/resources/lang/af-ZA/localizations.php b/resources/lang/af-ZA/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/af-ZA/localizations.php +++ b/resources/lang/af-ZA/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/af-ZA/validation.php b/resources/lang/af-ZA/validation.php index e7a0eb8a2..02faf9c00 100644 --- a/resources/lang/af-ZA/validation.php +++ b/resources/lang/af-ZA/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Die: attribuut veld moet teenwoordig wees.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Jou huidige wagwoord is verkeerd', 'dumbpwd' => 'Daardie wagwoord is te algemeen.', 'statuslabel_type' => 'U moet \'n geldige statusetiket tipe kies', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/am-ET/account/general.php b/resources/lang/am-ET/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/am-ET/account/general.php +++ b/resources/lang/am-ET/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/am-ET/admin/locations/message.php b/resources/lang/am-ET/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/am-ET/admin/locations/message.php +++ b/resources/lang/am-ET/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/am-ET/admin/settings/general.php b/resources/lang/am-ET/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/am-ET/admin/settings/general.php +++ b/resources/lang/am-ET/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/am-ET/admin/settings/message.php b/resources/lang/am-ET/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/am-ET/admin/settings/message.php +++ b/resources/lang/am-ET/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/am-ET/button.php b/resources/lang/am-ET/button.php index f28b62b75..e154e592a 100644 --- a/resources/lang/am-ET/button.php +++ b/resources/lang/am-ET/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/am-ET/general.php b/resources/lang/am-ET/general.php index 86d01da01..c9b8c49b0 100644 --- a/resources/lang/am-ET/general.php +++ b/resources/lang/am-ET/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/am-ET/localizations.php b/resources/lang/am-ET/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/am-ET/localizations.php +++ b/resources/lang/am-ET/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/am-ET/validation.php b/resources/lang/am-ET/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/am-ET/validation.php +++ b/resources/lang/am-ET/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ar-SA/account/general.php b/resources/lang/ar-SA/account/general.php index 2fbe34ba3..396afcdbc 100644 --- a/resources/lang/ar-SA/account/general.php +++ b/resources/lang/ar-SA/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ar-SA/admin/locations/message.php b/resources/lang/ar-SA/admin/locations/message.php index fa5001662..289718067 100644 --- a/resources/lang/ar-SA/admin/locations/message.php +++ b/resources/lang/ar-SA/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'الموقع غير موجود.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'هذا الموقع مرتبط حاليا بمادة عرض واحدة على الأقل ولا يمكن حذفها. يرجى تحديث مواد العرض لم تعد تشير إلى هذا الموقع ثم أعد المحاولة. ', 'assoc_child_loc' => 'هذا الموقع هو حاليا أحد الوالدين لموقع طفل واحد على الأقل ولا يمكن حذفه. يرجى تحديث مواقعك لم تعد تشير إلى هذا الموقع ثم أعد المحاولة.', 'assigned_assets' => 'الأصول المعينة', diff --git a/resources/lang/ar-SA/admin/settings/general.php b/resources/lang/ar-SA/admin/settings/general.php index d3f7d3571..c9385aaf9 100644 --- a/resources/lang/ar-SA/admin/settings/general.php +++ b/resources/lang/ar-SA/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'تكامل :app اختياري، ولكن نقطة النهاية والقناة مطلوبة إذا كنت ترغب في استخدامها. لتكوين تكامل :app، يجب عليك أولاً إنشاء webhook على حساب :app الخاص بك. انقر على زر اختبار تكامل :app لتأكيد أن إعداداتك صحيحة قبل الحفظ. ', 'webhook_integration_help_button' => 'بمجرد حفظ معلومات :app الخاصة بك، سيظهر زر الاختبار.', 'webhook_test_help' => 'اختبر ما إذا كان تكامل :app الخاص بك قد تم تكوينه بشكل صحيح. لقد قمت بتحديث :app إعدادات التحديثات.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'قنص-إيت الإصدار', 'support_footer' => 'دعم روابط تذييل الصفحة ', 'support_footer_help' => 'تحديد من يرى الروابط إلى دليل معلومات الدعم للمستخدمين عن طريق القناصة', diff --git a/resources/lang/ar-SA/admin/settings/message.php b/resources/lang/ar-SA/admin/settings/message.php index 01bc5ec70..835ace4af 100644 --- a/resources/lang/ar-SA/admin/settings/message.php +++ b/resources/lang/ar-SA/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'نعم، استعادة. أقر بأن هذا سوف يستبدل أي بيانات موجودة حاليا في قاعدة البيانات. سيؤدي هذا أيضا إلى تسجيل جميع المستخدمين الحاليين (بما في ذلك أنت).', 'restore_confirm' => 'هل أنت متأكد من رغبتك في استعادة قاعدة البيانات الخاصة بك من :filename؟' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'حدث خطأ أثناء التطهير.', 'validation_failed' => 'تأكيد التطهير غير صحيح. الرجاء كتابة الكلمة "ديليت" في مربع التأكيد.', diff --git a/resources/lang/ar-SA/button.php b/resources/lang/ar-SA/button.php index 65dcbf67d..08972aafe 100644 --- a/resources/lang/ar-SA/button.php +++ b/resources/lang/ar-SA/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ar-SA/general.php b/resources/lang/ar-SA/general.php index d3fadc453..5e4919cbd 100644 --- a/resources/lang/ar-SA/general.php +++ b/resources/lang/ar-SA/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'المواد الاستهلاكية', 'country' => 'الدولة', 'could_not_restore' => 'خطأ في استعادة :item_type: :error', - 'not_deleted' => 'لم يتم حذف :item_type لذلك لا يمكن استعادته', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'إضافة', 'created' => 'تم إنشاء العنصر', 'created_asset' => 'الأصول المضافة', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة APP_DEBUG في ملف .env إلى false.', 'delete' => 'حذف', 'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟', - 'delete_confirm_no_undo' => 'هل أنت متأكد من رغبتك في حذف :item؟ لا يمكن التراجع عن ذلك.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'تم حذفها', 'delete_seats' => 'المقاعد المحذوفة', 'deletion_failed' => 'فشل الحذف', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)', 'firstinitial.lastname' => 'الاسم الأخير الأول (jsmith@example.com)', 'firstnamelastinitial' => 'اللقب والحرف الاول من الاسم (smithj@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'الإسم الأول', 'first_name_format' => 'الاسم الأول (jane@example.com)', 'files' => 'الملفات', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'حذف الصورة', 'include_deleted' => 'تضمين الأصول المحذوفة', 'image_upload' => 'رفع صورة', - 'filetypes_accepted_help' => 'نوع الملف المقبول هو :types. الحد الأقصى لحجم التحميل المسموح به هو :size.|أنواع الملف المقبول هي :types. الحد الأقصى لحجم التحميل المسموح به هو :size.', - 'filetypes_size_help' => 'الحد الأقصى لحجم الرفع المسموح به هو :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'ملف الصورة هذا غير قابل للقراءة. أنواع الملفات المقبولة هي jpg، webpp، png، gif، svg. نوع هذا الملف هو: :mimetype.', 'import' => 'استيراد', 'import_this_file' => 'حقول الخريطة ومعالجة هذا الملف', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'التراخيص المتاحة', 'licenses' => 'التراخيص', 'list_all' => 'عرض الكل', - 'loading' => 'جار التحميل. أرجو الإنتظار....', + 'loading' => 'جار التحميل. أرجو الإنتظار...', 'lock_passwords' => 'لن يتم حفظ قيمة الحقل هذه في تثبيت تجريبي.', 'feature_disabled' => 'تم تعطيل هذه الميزة للتثبيت التجريبي.', 'location' => 'الموقع', @@ -193,7 +193,7 @@ return [ 'logout' => 'تسجيل خروج', 'lookup_by_tag' => 'البحث عن طريق ترميز الأصل', 'maintenances' => 'الصيانة', - 'manage_api_keys' => 'إدارة مفاتيح API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'الشركة المصنعة', 'manufacturers' => 'الشركات المصنعة', 'markdown' => 'يتيح هذا الحقل بتطبيق نمط الكتابة من Github.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'اختر الكل', 'search' => 'بحث', 'select_category' => 'اختر تصنيف', - 'select_datasource' => 'حدد سجل البيانات', + 'select_datasource' => 'Select a data source', 'select_department' => 'حدد قسم', 'select_depreciation' => 'حدد نوع الاستهلاك', 'select_location' => 'حدد موقعا', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'تم توقيعه من قبل', 'skin' => 'المظهر', 'webhook_msg_note' => 'سيتم إرسال إشعار عبر الربط البرمجي (webhook)', - 'webhook_test_msg' => 'مرحباً! يبدو أن تكامل :app مع Snipe-IT يعمل!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'التثبيت التجريبي (DEMO): يتم تعطيل بعض الميزات لهذا التثبيت.', 'site_name' => 'إسم الموقع', 'state' => 'المنطقة / الولاية', 'status_labels' => 'تسميات الحالة', + 'status_label' => 'Status Label', 'status' => 'الحالة', 'accept_eula' => 'اتفاقية القبول', 'supplier' => 'المورد', @@ -339,16 +340,16 @@ return [ 'view_all' => 'عرض الكل', 'hide_deleted' => 'إخفاء المحذوفة', 'email' => 'البريد الالكتروني', - 'do_not_change' => 'لا تقم بالتغيير', - 'bug_report' => 'الإبلاغ عن خلل', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'دليل المستخدم', 'setup_step_1' => 'الخطوة 1', 'setup_step_2' => 'الخطوة 2', 'setup_step_3' => 'الخطوة 3', 'setup_step_4' => 'الخطوة 4', 'setup_config_check' => 'التحقق من الاعدادات', - 'setup_create_database' => 'إنشاء جداول قاعدة البيانات', - 'setup_create_admin' => 'إنشاء مستخدم مسؤول', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'إنتهى!', 'bulk_edit_about_to' => 'أنت على وشك تحرير ما يلي: ', 'checked_out' => 'استعارة', diff --git a/resources/lang/ar-SA/localizations.php b/resources/lang/ar-SA/localizations.php index 288f0bdd0..95de5c8c4 100644 --- a/resources/lang/ar-SA/localizations.php +++ b/resources/lang/ar-SA/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'الملايو', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'المنغولية', - 'no-NO'=> 'النرويجية', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'الفارسية', 'pl-PL'=> 'البولندية', 'pt-PT'=> 'البرتغالية', diff --git a/resources/lang/ar-SA/validation.php b/resources/lang/ar-SA/validation.php index ea6b0090d..dc5ef0530 100644 --- a/resources/lang/ar-SA/validation.php +++ b/resources/lang/ar-SA/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'يجب أن يكون :attribute موجود.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'كلمة المرور الحالية غير صحيحة', 'dumbpwd' => 'كلمة المرور هذه شائعة جدا.', 'statuslabel_type' => 'يجب تحديد نوع تسمية حالة صالح', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/bg-BG/account/general.php b/resources/lang/bg-BG/account/general.php index 3a9cf0aa6..65ee0309a 100644 --- a/resources/lang/bg-BG/account/general.php +++ b/resources/lang/bg-BG/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Моля, проверете справката за API, за да намерите конкретни API крайни точки и допълнителна API документация.', 'profile_updated' => 'Акаунтът е актуализиран успешно', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/bg-BG/admin/accessories/message.php b/resources/lang/bg-BG/admin/accessories/message.php index f1aef9054..98af327a8 100644 --- a/resources/lang/bg-BG/admin/accessories/message.php +++ b/resources/lang/bg-BG/admin/accessories/message.php @@ -28,7 +28,7 @@ return array( 'unavailable' => 'Аксесоарт не е наличен за изписване. Проверете наличното количество', 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.', 'checkout_qty' => array( - 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + 'lte' => 'В момента има само един наличен аксесоар от този вид и вие се опитвате да изпишете :checkout_qty. Моля коригирайте количеството или общата наличност и опитайте отново.|Има :number_currently_remaining броя налични аксесоари и вие се опитвате да изпишете :checkout_qty. Моля коригирайте количеството или общата наличност и опитайте отново.', ), ), diff --git a/resources/lang/bg-BG/admin/consumables/general.php b/resources/lang/bg-BG/admin/consumables/general.php index 56a252892..fee7bbe73 100644 --- a/resources/lang/bg-BG/admin/consumables/general.php +++ b/resources/lang/bg-BG/admin/consumables/general.php @@ -8,5 +8,5 @@ return array( 'remaining' => 'Остава', 'total' => 'Oбщо', 'update' => 'Обновяване на консуматив', - 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', + 'inventory_warning' => 'Наличноста на този консуматив е под зададения минимум от :min_count', ); diff --git a/resources/lang/bg-BG/admin/locations/message.php b/resources/lang/bg-BG/admin/locations/message.php index e20d914e9..92395a853 100644 --- a/resources/lang/bg-BG/admin/locations/message.php +++ b/resources/lang/bg-BG/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Местоположението не съществува.', - 'assoc_users' => 'Понастоящем това местоположение не може да се изтрие, защото е местоположението на запис за поне един актив или потребител, има присвоени към него активи или е родителското местоположение на друго местоположение. Моля, актуализирайте моделите си, за да не споменавате повече тази компания, и опитайте отново. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Местоположението е свързано с поне един актив и не може да бъде изтрито. Моля, актуализирайте активите, така че да не са свързани с това местоположение и опитайте отново. ', 'assoc_child_loc' => 'В избраното местоположение е присъединено едно или повече местоположения. Моля преместете ги в друго и опитайте отново.', 'assigned_assets' => 'Изписани Активи', diff --git a/resources/lang/bg-BG/admin/settings/general.php b/resources/lang/bg-BG/admin/settings/general.php index b2350b11b..baa7f84b3 100644 --- a/resources/lang/bg-BG/admin/settings/general.php +++ b/resources/lang/bg-BG/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app интеграцията е по избор, въпреки че крайната цел и канала са задължителни, ако искате да я ползате. За да се конфигурира :app интеграцията трябва първо да създадете входяща webhook във вашият :app акаунт. Кликнете на Тест :app интеграция бутона за да потвърдите, че всичко работи преди да запишете настройките. ', 'webhook_integration_help_button' => 'След като запишите вашата информация за :app, ще се пояави тест бутон.', 'webhook_test_help' => 'Тест за коректна конфигурация на :app интеграцията. НЕОБХОДИМО Е ПЪРВО ДА ЗАПИШЕТЕ :app НАСТРОЙКИТЕ.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT версия', 'support_footer' => 'Връзки към Snipe-it поддръжката във футъра', 'support_footer_help' => 'Указва визуализацията на връзки към поддръжката на Snipe-IT и потребителската документация', diff --git a/resources/lang/bg-BG/admin/settings/message.php b/resources/lang/bg-BG/admin/settings/message.php index e23a9dacb..bf8532f46 100644 --- a/resources/lang/bg-BG/admin/settings/message.php +++ b/resources/lang/bg-BG/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Да, потвърди възстановяването. Това ще презапише цялата информация в датабазата и ще отпише всички вписани потребители включително вас.', 'restore_confirm' => 'Сигурни ли сте че искате да възстановите датабазата от :filename?' ], + 'restore' => [ + 'success' => 'Вашият системен архив беше възстановен. Моля влезте отново.' + ], 'purge' => [ 'error' => 'Възникна грешка при пречистване. ', 'validation_failed' => 'Потвърждението ви за пречистване не неправилно. Моля напишете думата "DELETE" в клетката за потвърждаване.', diff --git a/resources/lang/bg-BG/button.php b/resources/lang/bg-BG/button.php index 290c238dc..6595f54c4 100644 --- a/resources/lang/bg-BG/button.php +++ b/resources/lang/bg-BG/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/bg-BG/general.php b/resources/lang/bg-BG/general.php index 40fa4c46b..b1962fe72 100644 --- a/resources/lang/bg-BG/general.php +++ b/resources/lang/bg-BG/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Консумативи', 'country' => 'Държава', 'could_not_restore' => 'Грешка при възстановяване :item_type: :error', - 'not_deleted' => ':item_type е изтрит и не може да се възстанови', + 'not_deleted' => ':item_type не е изтрит и не може да бъде възстановен', 'create' => 'Създаване на нов', 'created' => 'Създадени артикули', 'created_asset' => 'създадени активи', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Фамилия и Първа буква от име (ivanov_i@example.com)', 'firstinitial.lastname' => 'Първа буква от името и Фамилия (i.ivanov@example.com)', 'firstnamelastinitial' => 'Име и първа буква от фамилия (ivani@example.com)', - 'lastnamefirstname' => 'Фамилно име Собствено име (smith.jane@example.com)', + 'lastnamefirstname' => 'Фамилно име.Собствено име (smith.jane@example.com)', 'first_name' => 'Собствено име', 'first_name_format' => 'Име (jane@example.com)', 'files' => 'Файлове', @@ -156,7 +156,7 @@ return [ 'image_delete' => 'Изтриване на изображението', 'include_deleted' => 'Включително изтрити активи', 'image_upload' => 'Качване на изображение', - 'filetypes_accepted_help' => 'Позволенo разширенe на файлa :types. Максимално позволен размер :size.|Позволени разширения на файлове са :types. Максимално позволен размер :size.', + 'filetypes_accepted_help' => 'Позволенoто разширенe на файлa е :types. Максимално позволения размер е :size.|Позволените разширения на файловете са :types. Максимално позволен размер :size.', 'filetypes_size_help' => 'Максимално позволен размер на файла е :size.', 'image_filetypes_help' => 'Допустимите файлови типове са jpg, webp, png, gif, svg и avif. Максималният разрешен размер за качване е :size.', 'unaccepted_image_type' => 'Снимката не може да се прочете. Типовете файлови разширения са jpg, webp, png, gif и svg. Разширението на този файл е :mimetype.', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Налични лицензи', 'licenses' => 'Лицензи', 'list_all' => 'Преглед на всички', - 'loading' => 'Зареждане... моля изчакайте....', + 'loading' => 'Зареждане... моля изчакайте...', 'lock_passwords' => 'В демо версията това поле няма да се запише.', 'feature_disabled' => 'Тази функция е забранена за демо инсталацията.', 'location' => 'Местоположение', @@ -279,6 +279,7 @@ return [ 'site_name' => 'Име на системата', 'state' => 'Област', 'status_labels' => 'Статус етикети', + 'status_label' => 'Status Label', 'status' => 'Статус', 'accept_eula' => 'Споразумение за приемане', 'supplier' => 'Доставчик', @@ -552,11 +553,11 @@ return [ ], 'more_info' => 'Повече информация', 'quickscan_bulk_help' => 'Поставянето на отметка в това квадратче ще редактира записа на актива, за да отрази това ново местоположение. Оставянето му без отметка просто ще отбележи местоположението в журнала за проверка. Обърнете внимание, че ако този актив бъде извлечен, той няма да промени местоположението на лицето, актива или местоположението, към които е извлечен.', - 'whoops' => 'Whoops!', - 'something_went_wrong' => 'Something went wrong with your request.', - 'close' => 'Close', + 'whoops' => 'Упс!', + 'something_went_wrong' => 'При обработката нещо се обърка.', + 'close' => 'Затвори', 'expires' => 'Изтича', 'map_fields'=> 'Map :item_type Field', - 'remaining_var' => ':count Remaining', + 'remaining_var' => 'остават :count', ]; diff --git a/resources/lang/bg-BG/localizations.php b/resources/lang/bg-BG/localizations.php index 994b2bd5d..aec385aba 100644 --- a/resources/lang/bg-BG/localizations.php +++ b/resources/lang/bg-BG/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Малайски', 'mi-NZ'=> 'Маори', 'mn-MN'=> 'Монголски', - 'no-NO'=> 'Норвежки', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Персийски', 'pl-PL'=> 'Полски', 'pt-PT'=> 'Португалски', diff --git a/resources/lang/bg-BG/validation.php b/resources/lang/bg-BG/validation.php index fc2eb2864..98574fa02 100644 --- a/resources/lang/bg-BG/validation.php +++ b/resources/lang/bg-BG/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Полето на атрибута трябва да е налице.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Текущата ви парола е неправилна', 'dumbpwd' => 'Тази парола е твърде често срещана.', 'statuslabel_type' => 'Трябва да изберете валиден тип етикет на състоянието', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ca-ES/account/general.php b/resources/lang/ca-ES/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ca-ES/account/general.php +++ b/resources/lang/ca-ES/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ca-ES/admin/locations/message.php b/resources/lang/ca-ES/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/ca-ES/admin/locations/message.php +++ b/resources/lang/ca-ES/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ca-ES/admin/settings/general.php b/resources/lang/ca-ES/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/ca-ES/admin/settings/general.php +++ b/resources/lang/ca-ES/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/ca-ES/admin/settings/message.php b/resources/lang/ca-ES/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/ca-ES/admin/settings/message.php +++ b/resources/lang/ca-ES/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/ca-ES/button.php b/resources/lang/ca-ES/button.php index aaf67104f..71292fe98 100644 --- a/resources/lang/ca-ES/button.php +++ b/resources/lang/ca-ES/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ca-ES/general.php b/resources/lang/ca-ES/general.php index 8218008c5..5690a088d 100644 --- a/resources/lang/ca-ES/general.php +++ b/resources/lang/ca-ES/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumibles', 'country' => 'País', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Crea nou', 'created' => 'Item Created', 'created_asset' => 'recurs creat', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Suprimeix', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'S\'ha suprimit', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Cercar per Etiqueta de Recurs', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/ca-ES/localizations.php b/resources/lang/ca-ES/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/ca-ES/localizations.php +++ b/resources/lang/ca-ES/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ca-ES/validation.php b/resources/lang/ca-ES/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/ca-ES/validation.php +++ b/resources/lang/ca-ES/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/chr-US/account/general.php b/resources/lang/chr-US/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/chr-US/account/general.php +++ b/resources/lang/chr-US/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/chr-US/admin/locations/message.php b/resources/lang/chr-US/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/chr-US/admin/locations/message.php +++ b/resources/lang/chr-US/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/chr-US/admin/settings/general.php b/resources/lang/chr-US/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/chr-US/admin/settings/general.php +++ b/resources/lang/chr-US/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/chr-US/admin/settings/message.php b/resources/lang/chr-US/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/chr-US/admin/settings/message.php +++ b/resources/lang/chr-US/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/chr-US/button.php b/resources/lang/chr-US/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/chr-US/button.php +++ b/resources/lang/chr-US/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/chr-US/general.php b/resources/lang/chr-US/general.php index b3a6b3432..444ed5408 100644 --- a/resources/lang/chr-US/general.php +++ b/resources/lang/chr-US/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/chr-US/localizations.php b/resources/lang/chr-US/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/chr-US/localizations.php +++ b/resources/lang/chr-US/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/chr-US/validation.php b/resources/lang/chr-US/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/chr-US/validation.php +++ b/resources/lang/chr-US/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/cs-CZ/account/general.php b/resources/lang/cs-CZ/account/general.php index 9923f9ad1..9785d993d 100644 --- a/resources/lang/cs-CZ/account/general.php +++ b/resources/lang/cs-CZ/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/cs-CZ/admin/locations/message.php b/resources/lang/cs-CZ/admin/locations/message.php index bbcfcec38..ad5e97fa0 100644 --- a/resources/lang/cs-CZ/admin/locations/message.php +++ b/resources/lang/cs-CZ/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Místo neexistuje.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Toto umístění je spojeno s alespoň jedním majetkem a nemůže být smazáno. Aktualizujte majetky tak aby nenáleželi k tomuto umístění a zkuste to znovu. ', 'assoc_child_loc' => 'Toto umístění je nadřazené alespoň jednomu umístění a nelze jej smazat. Aktualizujte své umístění tak, aby na toto umístění již neodkazovalo a zkuste to znovu. ', 'assigned_assets' => 'Přiřazený majetek', diff --git a/resources/lang/cs-CZ/admin/settings/general.php b/resources/lang/cs-CZ/admin/settings/general.php index b3495870b..17928b7fc 100644 --- a/resources/lang/cs-CZ/admin/settings/general.php +++ b/resources/lang/cs-CZ/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integrace je volitelná, ale koncový bod a kanál jsou vyžadovány, pokud jej chcete používat. Chcete-li konfigurovat integraci :app, musíte nejprve vytvořit příchozí webový háček na vašem účtu :app. Klikněte na tlačítko Test :app Integration pro potvrzení správného nastavení před uložením. ', 'webhook_integration_help_button' => 'Jakmile uložíte informace :app, objeví se testovací tlačítko.', 'webhook_test_help' => 'Vyzkoušejte, zda je vaše integrace :app správně nakonfigurována. MŮŽE MŮŽE MŮŽE VÁŠ AKTUALIZOVAT :app NASTAVENÍ FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Verze Snipe-IT', 'support_footer' => 'Odkazy v zápatí na podporu ', 'support_footer_help' => 'Určete, kdo uvidí odkazy na Snipe-IT podporu a uživatelskou příručku', diff --git a/resources/lang/cs-CZ/admin/settings/message.php b/resources/lang/cs-CZ/admin/settings/message.php index a7405ff34..f4a4721e0 100644 --- a/resources/lang/cs-CZ/admin/settings/message.php +++ b/resources/lang/cs-CZ/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ano, obnovit. Potvrzuji, že toto přepíše existující data v databázi. Tato akce taky odhlásí všechny uživatele (včetně vás).', 'restore_confirm' => 'Jste si jisti, že chcete obnovit databázi z :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Během čištění došlo k chybě. ', 'validation_failed' => 'Vaše potvrzení o čištění je nesprávné. Zadejte prosím slovo "DELETE" do potvrzovacího rámečku.', diff --git a/resources/lang/cs-CZ/button.php b/resources/lang/cs-CZ/button.php index e9d10985c..036b97e84 100644 --- a/resources/lang/cs-CZ/button.php +++ b/resources/lang/cs-CZ/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/cs-CZ/general.php b/resources/lang/cs-CZ/general.php index a8b3d719c..1fe87862d 100644 --- a/resources/lang/cs-CZ/general.php +++ b/resources/lang/cs-CZ/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Spotřební materiál', 'country' => 'Země', 'could_not_restore' => 'Chyba při obnově :item_type: :chyba', - 'not_deleted' => ':item_type není odstraněn, takže nemůže být obnoven', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Vytvořit nové', 'created' => 'Položka vytvořena', 'created_asset' => 'vytvořit majetek', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Tato aplikace běží ve výrobním režimu s povoleným laděním. To znamená že citlivá data mohou být přístupná vnějšímu světu. Deaktivujte režim ladění nastavením hodnoty APP_DEBUG v souboru .env na false.', 'delete' => 'Odstranit', 'delete_confirm' => 'Opravdu chcete smazat :item?', - 'delete_confirm_no_undo' => 'Opravdu chcete odstranit :item? Tuto operaci nelze zvrátit.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Odstraněno', 'delete_seats' => 'Vymazaná licenční místa', 'deletion_failed' => 'Odstranění se nezdařilo', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Příjmení Iniciál (novak_j@example.com)', 'firstinitial.lastname' => 'Iniciál Príjmení (j.novak@example.com)', 'firstnamelastinitial' => 'Jméno Iniciál(josefn@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Jméno', 'first_name_format' => 'Jméno (jane@example.com)', 'files' => 'Soubory', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Smazat obrázek', 'include_deleted' => 'Zahrnout odstraněné položky', 'image_upload' => 'Nahrát obrázek', - 'filetypes_accepted_help' => 'Přijatý typ souboru je :types. Maximální povolená velikost nahrávání je :size.|Přijaté typy souborů jsou :types. Maximální povolená velikost nahrávání je :size.', - 'filetypes_size_help' => 'Maximální povolená velikost nahrávání je :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Soubor s obrázkem nebyl čitelný. Přijatelné druhy souborů jsou jpg, webp, png, gif, a svg. Tento soubor je druhu: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Mapa polí a zpracovávat tento soubor', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Dostupné licence', 'licenses' => 'Licence', 'list_all' => 'Vypsat vše', - 'loading' => 'Načítání, čekejte prosím...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Tato hodnota pole nebude uložena v ukázkové instalaci.', 'feature_disabled' => 'Tato funkce byla deaktivována pro demo instalaci.', 'location' => 'Lokalita', @@ -193,7 +193,7 @@ return [ 'logout' => 'Odhlásit', 'lookup_by_tag' => 'Vyhledávání podle značky majetku', 'maintenances' => 'Údržby', - 'manage_api_keys' => 'Spravovat API klíče', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Výrobce', 'manufacturers' => 'Výrobci', 'markdown' => 'Toto pole umožňuje Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Vybrat vše', 'search' => 'Hledat', 'select_category' => 'Vyberte kategorii', - 'select_datasource' => 'Vyberte datový soubor', + 'select_datasource' => 'Select a data source', 'select_department' => 'Vyberte Oddělení', 'select_depreciation' => 'Zvolit typ amortizace', 'select_location' => 'Zvolit místo', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Odepsal:', 'skin' => 'Vzhled', 'webhook_msg_note' => 'Oznámení zavolá webhook', - 'webhook_test_msg' => 'Ah haj! Vypadá to, že vaše :app integrace se Snipe-IT funguje!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'REŽIM DEMO: Některé funkce jsou pro tuto instalaci zakázány.', 'site_name' => 'Název lokality', 'state' => 'Stát', 'status_labels' => 'Označení stavu', + 'status_label' => 'Status Label', 'status' => 'Stav', 'accept_eula' => 'Licenční podmínky', 'supplier' => 'Dodavatel', @@ -339,16 +340,16 @@ return [ 'view_all' => 'zobrazit vše', 'hide_deleted' => 'Skrýt smazané', 'email' => 'Email', - 'do_not_change' => 'Neměnit', - 'bug_report' => 'Nahlásit chybu', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Uživatelská příručka', 'setup_step_1' => 'Krok 1', 'setup_step_2' => 'Krok 2', 'setup_step_3' => 'Krok 3', 'setup_step_4' => 'Krok 4', 'setup_config_check' => 'Kontrola konfigurace', - 'setup_create_database' => 'Vytvořit databázové tabulky', - 'setup_create_admin' => 'Vytvořit administrátora', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Hotovo!', 'bulk_edit_about_to' => 'Tímto upravíte následující možnosti: ', 'checked_out' => 'K výdeji', diff --git a/resources/lang/cs-CZ/localizations.php b/resources/lang/cs-CZ/localizations.php index 87e975098..ea101d88b 100644 --- a/resources/lang/cs-CZ/localizations.php +++ b/resources/lang/cs-CZ/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malajština', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolština', - 'no-NO'=> 'Norština', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Perština', 'pl-PL'=> 'Polština', 'pt-PT'=> 'Portugalština', diff --git a/resources/lang/cs-CZ/validation.php b/resources/lang/cs-CZ/validation.php index efae48ba9..5aeca5e9f 100644 --- a/resources/lang/cs-CZ/validation.php +++ b/resources/lang/cs-CZ/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Pole atributu musí být přítomno.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Vaše současné heslo je nesprávné', 'dumbpwd' => 'Toto heslo je příliš běžné.', 'statuslabel_type' => 'Musíte vybrat platný typ štítku stavu', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/cy-GB/account/general.php b/resources/lang/cy-GB/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/cy-GB/account/general.php +++ b/resources/lang/cy-GB/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/cy-GB/admin/locations/message.php b/resources/lang/cy-GB/admin/locations/message.php index 204368aa6..3c8390328 100644 --- a/resources/lang/cy-GB/admin/locations/message.php +++ b/resources/lang/cy-GB/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Nid yw\'r lleoliad yn bodoli.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Mae\'r lleoliad yma wedi perthnasu i oleiaf un ased a nid yw\'n bosib dileu. Diweddarwch eich asedau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ', 'assoc_child_loc' => 'Mae\'r lleoliad yma yn rhiant i oleiaf un lleoliad a nid yw\'n bosib dileu. Diweddarwch eich lleoliadau i beidio cyfeirio at y lleoliad yma ac yna ceisiwch eto. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/cy-GB/admin/settings/general.php b/resources/lang/cy-GB/admin/settings/general.php index 5e15b8dc2..8f4a9d1af 100644 --- a/resources/lang/cy-GB/admin/settings/general.php +++ b/resources/lang/cy-GB/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Fersiwn Snipe-IT', 'support_footer' => 'Cefnogi lincs ar waelod tudalenau ', 'support_footer_help' => 'Nodi pwy sydd yn gallu gweld y wybodaeth cefnogi ar canllaw defnyddwyr', diff --git a/resources/lang/cy-GB/admin/settings/message.php b/resources/lang/cy-GB/admin/settings/message.php index cd2d0ae32..a4baa02ae 100644 --- a/resources/lang/cy-GB/admin/settings/message.php +++ b/resources/lang/cy-GB/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Gwall wedi digwydd wrth glirio. ', 'validation_failed' => 'Mae eich cadarnhad i clirio yn anghywir. Teipiwch y gair "DELETE" yn y bocs cadarnhad.', diff --git a/resources/lang/cy-GB/button.php b/resources/lang/cy-GB/button.php index 139926f12..f868c5b4e 100644 --- a/resources/lang/cy-GB/button.php +++ b/resources/lang/cy-GB/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/cy-GB/general.php b/resources/lang/cy-GB/general.php index f4b55f36c..6825af082 100644 --- a/resources/lang/cy-GB/general.php +++ b/resources/lang/cy-GB/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Nwyddau traul', 'country' => 'Gwlad', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Creu newydd', 'created' => 'Eitem wedi\'i Greu', 'created_asset' => 'ased wedi creu', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Mae\'r cymhwysiad hwn yn rhedeg yn y modd cynhyrchu gyda debugging wedi\'i alluogi. Gall hyn ddatgelu data sensitif os yw\'ch cais yn hygyrch i\'r byd y tu allan. Analluoga modd dadfygio trwy osod y APP_DEBUG gwerth yn .env ffeil ifalse.', 'delete' => 'Dileu', 'delete_confirm' => 'Ydych chi\'n sicr eich bod eisiau dileu\'r :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Wedi Dileu', 'delete_seats' => 'Seddi wedi dileu', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'Llythyren Cyntaf Enw Cyntaf Cyfenw (jsmith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Enw cyntaf', 'first_name_format' => 'Enw Cyntaf (jane@example.com)', 'files' => 'Ffeiliau', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Dileu Delwedd', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Uwchlwytho delwedd', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Mewnforio', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Trwyddedau', 'list_all' => 'Rhestru holl', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Mae\'r nodwedd hon wedi\'i anablu ar gyfer y gosodiad demo.', 'location' => 'Lleoliad', @@ -193,7 +193,7 @@ return [ 'logout' => 'Allgofnodi', 'lookup_by_tag' => 'Chwilio gan tag ased', 'maintenances' => 'Cynnal a Chadw', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Gwneuthyrwr', 'manufacturers' => 'Gwneuthyrwr', 'markdown' => 'Mae\'r maes yma yn derbynmarkdown GitHub.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Dewis Popeth', 'search' => 'Chwilio', 'select_category' => 'Dewis Categorï', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Dewsi Adran', 'select_depreciation' => 'Dewis math o dibrisiant', 'select_location' => 'Dewis lleoliad', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'MODE DEMO: Mae rhai nodweddion wedi analluogi ar gyfer y gosodiad hwn.', 'site_name' => 'Enw Safle', 'state' => 'Talaith', 'status_labels' => 'Labeli Statws', + 'status_label' => 'Status Label', 'status' => 'Statws', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Cyflenwr', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Ebost', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Allan', diff --git a/resources/lang/cy-GB/localizations.php b/resources/lang/cy-GB/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/cy-GB/localizations.php +++ b/resources/lang/cy-GB/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/cy-GB/validation.php b/resources/lang/cy-GB/validation.php index 2e764543d..0900b49f1 100644 --- a/resources/lang/cy-GB/validation.php +++ b/resources/lang/cy-GB/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Rhaid i\'r maes :attribute bod yn presennol.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Mae eich cyfrinair cyfredol yn anghywir', 'dumbpwd' => 'Mae\'r cyfrinair hwnnw\'n rhy gyffredin.', 'statuslabel_type' => 'Rhaid i chi ddewis math label statws dilys', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/da-DK/account/general.php b/resources/lang/da-DK/account/general.php index 13fe5b572..d4935dc8c 100644 --- a/resources/lang/da-DK/account/general.php +++ b/resources/lang/da-DK/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/da-DK/admin/locations/message.php b/resources/lang/da-DK/admin/locations/message.php index 7c583ee89..f447267a0 100644 --- a/resources/lang/da-DK/admin/locations/message.php +++ b/resources/lang/da-DK/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Beliggenhed findes ikke.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Denne placering er i øjeblikket forbundet med mindst ét ​​aktiv og kan ikke slettes. Opdater dine aktiver for ikke længere at henvise til denne placering, og prøv igen.', 'assoc_child_loc' => 'Denne placering er for øjeblikket forælder på mindst et barns placering og kan ikke slettes. Opdater dine placeringer for ikke længere at henvise til denne placering, og prøv igen.', 'assigned_assets' => 'Tildelte aktiver', diff --git a/resources/lang/da-DK/admin/settings/general.php b/resources/lang/da-DK/admin/settings/general.php index 6f6c2faf9..f4261f10a 100644 --- a/resources/lang/da-DK/admin/settings/general.php +++ b/resources/lang/da-DK/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration er valgfri, men endepunktet og kanalen er påkrævet, hvis du ønsker at bruge det. For at konfigurere :app integration, skal du først oprette en indgående webhook på din :app konto. Klik på knappen Test :app Integration for at bekræfte, at dine indstillinger er korrekte, før du gemmer. ', 'webhook_integration_help_button' => 'Når du har gemt dine :app oplysninger, vil en test knap vises.', 'webhook_test_help' => 'Test om din :app integration er konfigureret korrekt. DU SKAL GEM DIN OPDATERET: app INDSTILLINGER FØRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Understøt footer links ', 'support_footer_help' => 'Angiv hvem der kan se links i Snipe-IT Support info og brugermanual', diff --git a/resources/lang/da-DK/admin/settings/message.php b/resources/lang/da-DK/admin/settings/message.php index ec3eb4472..cad65ffc5 100644 --- a/resources/lang/da-DK/admin/settings/message.php +++ b/resources/lang/da-DK/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, gendanne den. Jeg anerkender, at dette vil overskrive alle eksisterende data i databasen. Dette vil også logge ud alle dine eksisterende brugere (inklusive dig).', 'restore_confirm' => 'Er du sikker på, at du vil gendanne din database fra :filnavn?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Der opstod en fejl under udrensning.', 'validation_failed' => 'Din udrensningsbekræftelse er forkert. Indtast ordet "DELETE" i bekræftelsesboksen.', diff --git a/resources/lang/da-DK/button.php b/resources/lang/da-DK/button.php index 4af3d6f32..8a36105ce 100644 --- a/resources/lang/da-DK/button.php +++ b/resources/lang/da-DK/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/da-DK/general.php b/resources/lang/da-DK/general.php index e3abae5fc..8ee2d2efa 100644 --- a/resources/lang/da-DK/general.php +++ b/resources/lang/da-DK/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Forbrugsstoffer', 'country' => 'Land', 'could_not_restore' => 'Fejl under gendannelse af :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Opret ny', 'created' => 'Elementet er oprettet', 'created_asset' => 'skabte aktiver', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Denne applikation kører i produktionstilstand med debugging aktiveret. Dette kan udsætte følsomme data, hvis din ansøgning er tilgængelig for omverdenen. Deaktiver fejlsøgningsmodus ved at indstille værdien APP_DEBUG i din .env fil til false.', 'delete' => 'Slet', 'delete_confirm' => 'Er du sikker på at du vil slette :item?', - 'delete_confirm_no_undo' => 'Er du sikker på du vil slette :item? Dette kan ikke fortrydes.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Slettet', 'delete_seats' => 'Slettede pladser', 'deletion_failed' => 'Sletning mislykkedes', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Efternavn første bogstav i fornavn (smith_j@example.com)', 'firstinitial.lastname' => 'Første bogstav i fornavn.efternavn (j.smith@example.com)', 'firstnamelastinitial' => 'Fornavn førstebogstav i efternavn (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Fornavn', 'first_name_format' => 'Fornavn (jane@example.com)', 'files' => 'Filer', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Slet billede', 'include_deleted' => 'Inkludér slettede aktiver', 'image_upload' => 'Upload billede', - 'filetypes_accepted_help' => 'Accepteret filtype er :types. Filstørrelsen må højst være :size.|Accepterede filtyper er :types. Filstørrelsen må højst være :size.', - 'filetypes_size_help' => 'Filstørrelsen må højst være :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Denne billedfil var ikke læsbar. Accepterede filtyper er jpg, webp, png, gif og svg. Mimetypen for denne fil er: :mimetype.', 'import' => 'Importér', 'import_this_file' => 'Kortfelter og behandl denne fil', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Tilgængelige licenser', 'licenses' => 'Licenser', 'list_all' => 'Vis alle', - 'loading' => 'Indlæser... Vent venligst...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Feltværdien vil ikke blive gemt i en demoinstallation.', 'feature_disabled' => 'Denne funktion er blevet deaktiveret til demoinstallationen.', 'location' => 'Lokation', @@ -193,7 +193,7 @@ return [ 'logout' => 'Log ud', 'lookup_by_tag' => 'Søg på aktivkode', 'maintenances' => 'Vedligeholdelse', - 'manage_api_keys' => 'Administrer API-nøgler', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Producent', 'manufacturers' => 'Producenter', 'markdown' => 'Dette felt tillader Github koder.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Vælg alle', 'search' => 'Søg', 'select_category' => 'Vælg en kategori', - 'select_datasource' => 'Vælg en datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Vælg en afdeling', 'select_depreciation' => 'Vælg en afskrivningstype', 'select_location' => 'Vælg en placering', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Godkendt af', 'skin' => 'Skin', 'webhook_msg_note' => 'En notifikation vil blive sendt via webhook', - 'webhook_test_msg' => 'Åh hai! Det ser ud til, at din :app-integration med Snipe-IT fungerer!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Nogle funktioner er deaktiveret for denne installation.', 'site_name' => 'Site Navn', 'state' => 'Stat', 'status_labels' => 'Status labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Licensaftale', 'supplier' => 'Leverandør', @@ -339,16 +340,16 @@ return [ 'view_all' => 'vis alle', 'hide_deleted' => 'Skjul slettede', 'email' => 'Email', - 'do_not_change' => 'Må ikke ændres', - 'bug_report' => 'Rapporter en fejl', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Brugermanual', 'setup_step_1' => 'Trin 1', 'setup_step_2' => 'Trin 2', 'setup_step_3' => 'Trin 3', 'setup_step_4' => 'Trin 4', 'setup_config_check' => 'Kontrollerer opsætning', - 'setup_create_database' => 'Opret databasetabeller', - 'setup_create_admin' => 'Opret admin-bruger', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Udført!', 'bulk_edit_about_to' => 'Du skal til at redigere følgende: ', 'checked_out' => 'Tjekket ud', diff --git a/resources/lang/da-DK/localizations.php b/resources/lang/da-DK/localizations.php index 755faba88..9399cd259 100644 --- a/resources/lang/da-DK/localizations.php +++ b/resources/lang/da-DK/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaysisk', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolsk', - 'no-NO'=> 'Norsk', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persisk', 'pl-PL'=> 'Polsk', 'pt-PT'=> 'Portugisisk', diff --git a/resources/lang/da-DK/validation.php b/resources/lang/da-DK/validation.php index da707899a..47cc4ef91 100644 --- a/resources/lang/da-DK/validation.php +++ b/resources/lang/da-DK/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Attributfeltet skal være til stede.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Din nuværende adgangskode er forkert', 'dumbpwd' => 'Denne adgangskode er for almindelig.', 'statuslabel_type' => 'Du skal vælge en gyldig statusetiketype', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/de-DE/account/general.php b/resources/lang/de-DE/account/general.php index e0e64536f..296fae7ee 100644 --- a/resources/lang/de-DE/account/general.php +++ b/resources/lang/de-DE/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Bitte lesen Sie die API Dokumentation um Informationen über die verfügbaren API-Endpunkte zu erhalten.', 'profile_updated' => 'Konto erfolgreich aktualisiert', 'no_tokens' => 'Sie haben noch keinen persönlichen Zugangs-Token erstellt.', + 'enable_sounds' => 'Soundeffekte aktivieren', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/de-DE/admin/accessories/message.php b/resources/lang/de-DE/admin/accessories/message.php index 53d4c3e94..72c00074e 100644 --- a/resources/lang/de-DE/admin/accessories/message.php +++ b/resources/lang/de-DE/admin/accessories/message.php @@ -28,7 +28,7 @@ return array( 'unavailable' => 'Zubehör ist nicht verfügbar, um herausgegeben zu werden. Prüfen Sie die verfügbare Menge', 'user_does_not_exist' => 'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.', 'checkout_qty' => array( - 'lte' => 'Derzeit ist nur ein Zubehör dieses Typs verfügbar, und Sie versuchsen :checkout_qty auszuprobieren. Bitte passen Sie die Herausgabe-Menge oder den Gesamtbestand des Zubehörs an und versuchen Sie es erneut. Es gibt :number_currently_remaining insgesamt verfügbare Zubehör, und Sie versuchen, :checkout_qty herauszugeben. Bitte passen Sie die Herausgabe-Menge oder den Gesamtbestand des Zubehörs an und versuchen Sie es erneut.', + 'lte' => 'Derzeit ist nur ein Zubehör dieses Typs verfügbar, und Sie versuchen :checkout_qty herauszugeben. Bitte passen Sie die Herausgabe-Menge oder den Gesamtbestand des Zubehörs an, und versuchen Sie es erneut. Es gibt :number_currently_remaining insgesamt verfügbare Zubehör, und Sie versuchen, :checkout_qty herauszugeben. Bitte passen Sie die Herausgabe-Menge oder den Gesamtbestand des Zubehörs an und versuchen Sie es erneut.', ), ), diff --git a/resources/lang/de-DE/admin/locations/message.php b/resources/lang/de-DE/admin/locations/message.php index 25de236c5..fd12fdc6d 100644 --- a/resources/lang/de-DE/admin/locations/message.php +++ b/resources/lang/de-DE/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Standort nicht verfügbar.', - 'assoc_users' => 'Dieser Standort kann derzeit nicht gelöscht werden, da er der Standort für mindestens ein Asset oder einen Benutzer ist, ihm Assets zugewiesen sind oder er der übergeordnete Standort eines anderen Standorts ist. Aktualisieren Sie Ihre Modelle, damit diese nicht mehr auf dieses Unternehmen verweisen, und versuchen Sie es erneut. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Dieser Standort ist aktuell mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entfernen Sie die Standortzuweisung bei den jeweiligen Gegenständen und versuchen Sie es erneut diesen Standort zu entfernen. ', 'assoc_child_loc' => 'Dieser Ort ist aktuell mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte Orte aktualisieren, so dass dieser Standort nicht mehr verknüpft ist und erneut versuchen. ', 'assigned_assets' => 'Zugeordnete Assets', diff --git a/resources/lang/de-DE/admin/settings/general.php b/resources/lang/de-DE/admin/settings/general.php index 0263ea5d8..00afed651 100644 --- a/resources/lang/de-DE/admin/settings/general.php +++ b/resources/lang/de-DE/admin/settings/general.php @@ -6,7 +6,7 @@ return [ 'ad_domain_help' => 'Meistens dieselbe wie die E-Mail Domäne.', 'ad_append_domain_label' => 'Domänenname anhängen', 'ad_append_domain' => 'Domänenname an das Feld Benutzername anhängen', - 'ad_append_domain_help' => 'Benutzer muss nicht "username@domain.local" eingeben, "username" ist ausreichend.', + 'ad_append_domain_help' => 'Der Benutzer muss nicht "username@domain.local" eingeben, "username" ist ausreichend.', 'admin_cc_email' => 'CC Email', 'admin_cc_email_help' => 'Wenn Sie eine Kopie der Rücknahme- / Herausgabe-E-Mails, die an Benutzer gehen auch an zusätzliche E-Mail-Empfänger versenden möchten, geben Sie sie hier ein. Ansonsten lassen Sie dieses Feld leer.', 'admin_settings' => 'Admin-Einstellungen', @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app Integration ist optional, allerdings sind Endpunkt und Kanal erforderlich, wenn Sie sie verwenden möchten. Um die :app Integration zu konfigurieren, musst du zuerst in deinem :app Account einen eingehenden Webhook erstellen. Klicken Sie auf den :app Integration testen -Knopf, um zu bestätigen, dass die Einstellungen vor dem Speichern korrekt sind. ', 'webhook_integration_help_button' => 'Sobald Sie Ihre :app Informationen gespeichert haben, erscheint ein Test-Knopf.', 'webhook_test_help' => 'Testen Sie, ob Ihre :app Integration korrekt konfiguriert ist. SIE MÜSSEN SIE IHRE AKTUELLEN :app EINSTELLUNGEN ZUERST SPEICHERN.', + 'shortcuts_enabled' => 'Shortcuts aktivieren', + 'shortcuts_help_text' => 'Windows: Alt + Access-Taste, Mac: Control + Option + Access-Taste', 'snipe_version' => 'Snipe-IT Version', 'support_footer' => 'Fußzeile Support-Link ', 'support_footer_help' => 'Geben Sie an, wer die Links zum Snipe-IT Support-Info und Benutzerhandbuch sieht', diff --git a/resources/lang/de-DE/admin/settings/message.php b/resources/lang/de-DE/admin/settings/message.php index c5130f0b4..baa42f7dd 100644 --- a/resources/lang/de-DE/admin/settings/message.php +++ b/resources/lang/de-DE/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, wiederherstellen. Ich bestätige, dass dies alle vorhandenen Daten überschreibt, die derzeit in der Datenbank vorhanden sind. Diese Aktion wird auch alle bestehenden Benutzer abmelden (einschließlich Ihnen).', 'restore_confirm' => 'Sind Sie sicher, dass Sie Ihre Datenbank aus :filename wiederherstellen möchten?' ], + 'restore' => [ + 'success' => 'Ihr Systembackup wurde wiederhergestellt. Bitte melden Sie sich erneut an.' + ], 'purge' => [ 'error' => 'Beim Bereinigen ist ein Fehler augetreten. ', 'validation_failed' => 'Falsche Bereinigungsbestätigung. Bitte geben Sie das Wort "DELETE" im Bestätigungsfeld ein.', diff --git a/resources/lang/de-DE/button.php b/resources/lang/de-DE/button.php index eab45acc9..5c0f89782 100644 --- a/resources/lang/de-DE/button.php +++ b/resources/lang/de-DE/button.php @@ -26,7 +26,7 @@ return [ 'clone' => ':item_type duplizieren', 'edit' => ':item_type bearbeiten', 'delete' => ':item_type löschen', - 'restore' => ':item_type löschen', + 'restore' => ':item_type wiederherstellen', 'create' => 'Neue/s :item_type erstellen', 'checkout' => ':item_type auschecken', 'checkin' => ':item_type einchecken', diff --git a/resources/lang/de-DE/general.php b/resources/lang/de-DE/general.php index 579b8529a..26df5b4d7 100644 --- a/resources/lang/de-DE/general.php +++ b/resources/lang/de-DE/general.php @@ -121,22 +121,22 @@ return [ 'exclude_archived' => 'Archivierte Assets ausschließen', 'exclude_deleted' => 'Gelöschte Assets ausschließen', 'example' => 'Beispiel: ', - 'filastname_format' => 'Initial des Vornamen + Nachname (jsmith@example.com)', - 'firstname_lastname_format' => 'Vorname.Nachname (jane.smith@example.com)', - 'firstname_lastname_underscore_format' => 'Vorname_Nachname (max_mustermann@beispiel.com)', - 'lastnamefirstinitial_format' => 'Nachname & Initiale des Vornamens (musterm@beispiel.com)', - 'firstintial_dot_lastname_format' => 'Initiale des Vornamen.Nachname (j.smith@example.com)', - 'firstname_lastname_display' => 'Vorname Nachname (Jane Smith)', - 'lastname_firstname_display' => 'Nachname Vorname (Smith Jane)', + 'filastname_format' => 'Initial des Vornamen & Nachname (emustermann@example.com)', + 'firstname_lastname_format' => 'Vorname.Nachname (erika.mustermann@example.com)', + 'firstname_lastname_underscore_format' => 'Vorname_Nachname (erika_mustermann@example.com)', + 'lastnamefirstinitial_format' => 'Nachname & Initiale des Vornamens (mustere@example.com)', + 'firstintial_dot_lastname_format' => 'Initiale des Vornamen.Nachname (e.mustermann@example.com)', + 'firstname_lastname_display' => 'Vorname Nachname (Max Mustermann)', + 'lastname_firstname_display' => 'Nachname Vorname (Mustermann Max)', 'name_display_format' => 'Name Anzeigeformat', 'first' => 'Erste', - 'firstnamelastname' => 'VornameNachname (ErikaMustermann@beispiel.de)', - 'lastname_firstinitial' => 'Nachname_Initiale des Vornamens (mustermann_e@beispiel.de)', - 'firstinitial.lastname' => 'Initiale des Vornamens.Nachname (e.mustermann@beispiel.de)', - 'firstnamelastinitial' => 'Vorname und Initiale des Nachnamen (erika_m@beispiel.de)', - 'lastnamefirstname' => 'Nachname Vorname (mustermann.erika@example.com)', + 'firstnamelastname' => 'Vorname & Nachname (erikamustermann@example.com)', + 'lastname_firstinitial' => 'Nachname_Initiale des Vornamens (mustermann_e@example.com)', + 'firstinitial.lastname' => 'Initial des Vornamens.Nachname (e.mustermann@example.com)', + 'firstnamelastinitial' => 'Vorname und Initiale des Nachnamen (erikam@example.com)', + 'lastnamefirstname' => 'Nachname.Vorname (mustermann.erika@example.com)', 'first_name' => 'Vorname', - 'first_name_format' => 'Vorname (jane@example.com)', + 'first_name_format' => 'Vorname (erika@example.com)', 'files' => 'Dateien', 'file_name' => 'Datei', 'file_type' => 'Dateityp', @@ -156,11 +156,11 @@ return [ 'image_delete' => 'Bild löschen', 'include_deleted' => 'Gelöschte Gegenstände einbeziehen', 'image_upload' => 'Bild hochladen', - 'filetypes_accepted_help' => 'Akzeptierter Dateityp ist :types. Maximal zulässige Hochlade-Größe ist :size.|Akzeptierte Dateitypen sind :types. Maximal erlaubte Hochlade-Größe ist :size.', + 'filetypes_accepted_help' => 'Akzeptierter Dateityp ist :types. Maximal zulässige Größe ist :size.|Akzeptierte Dateitypen sind :types. Maximal erlaubte Hochlade-Größe ist :size.', 'filetypes_size_help' => 'Maximal erlaubte Hochlade-Größe ist :size.', 'image_filetypes_help' => 'Akzeptierte Dateitypen sind jpg, webp, png, gif, svg, und avif. Die maximal zulässige Upload-Größe beträgt :size.', 'unaccepted_image_type' => 'Diese Bilddatei ist nicht lesbar. Akzeptierte Dateitypen sind jpg, webp, png, gif und svg. Der MIME-Type dieser Datei ist: :mimetype.', - 'import' => 'Importieren', + 'import' => 'Import', 'import_this_file' => 'Felder zuordnen und diese Datei bearbeiten', 'importing' => 'Wird importiert', 'importing_help' => 'Sie können Assets, Zubehör, Lizenzen, Komponenten, Verbrauchsmaterialien und Benutzer mittels CSV-Datei importieren.

Die CSV-Datei sollte kommagetrennt sein und eine Kopfzeile enthalten, die mit den Beispiel-CSVs aus der Dokumentation übereinstimmen.', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Verfügbare Lizenzen', 'licenses' => 'Lizenzen', 'list_all' => 'Alle auflisten', - 'loading' => 'Wird geladen... Bitte warten....', + 'loading' => 'Wird geladen... Bitte warten...', 'lock_passwords' => 'Dieser Feldwert wird in einer Demo-Installation nicht gespeichert.', 'feature_disabled' => 'Dieses Feature wurde für die Demo-Installation deaktiviert.', 'location' => 'Standort', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Freigegeben von', 'skin' => 'Skin', 'webhook_msg_note' => 'Eine Benachrichtigung wird über den Webhook gesendet', - 'webhook_test_msg' => 'Oh hey! Sieht so aus, als ob Ihre :app Integration mit Snipe-IT funktioniert!', + 'webhook_test_msg' => 'Oh hi! Sieht so aus, als ob Ihre :app Integration mit Snipe-IT funktioniert!', 'some_features_disabled' => 'DEMO-MODE: Einige Funktionen sind für diese Installation deaktiviert.', 'site_name' => 'Seitenname', 'state' => 'Bundesland', 'status_labels' => 'Statusbezeichnungen', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Annahmeerklärung', 'supplier' => 'Lieferant', diff --git a/resources/lang/de-DE/localizations.php b/resources/lang/de-DE/localizations.php index e261e982f..e674b2c5e 100644 --- a/resources/lang/de-DE/localizations.php +++ b/resources/lang/de-DE/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaiisch', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolisch', - 'no-NO'=> 'Norwegisch', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegisch Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persisch', 'pl-PL'=> 'Polnisch', 'pt-PT'=> 'Portugiesisch', diff --git a/resources/lang/de-DE/mail.php b/resources/lang/de-DE/mail.php index ab6a55a32..24989de9c 100644 --- a/resources/lang/de-DE/mail.php +++ b/resources/lang/de-DE/mail.php @@ -88,7 +88,7 @@ return [ 'user' => 'Benutzer', 'username' => 'Benutzername', 'unaccepted_asset_reminder' => 'Sie haben nicht akzeptierte Assets.', - 'welcome' => 'Wilkommen, :name', + 'welcome' => 'Willkommen, :name', 'welcome_to' => 'Willkommen bei :web!', 'your_assets' => 'Ihre Assets anzeigen', 'your_credentials' => 'Ihre Snipe-IT Anmeldedaten', diff --git a/resources/lang/de-DE/validation.php b/resources/lang/de-DE/validation.php index b88ac5281..b308da9d7 100644 --- a/resources/lang/de-DE/validation.php +++ b/resources/lang/de-DE/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'Das Feld :attribute muss mindestens ein Symbol enthalten.', 'uncompromised' => 'Das angegebene :attribute ist in einem Datenleck aufgetaucht. Bitte wählen Sie ein anderes :attribute.', ], + 'percent' => 'Bei einer prozentualen Abschreibung muss der Mindestabschreibungswert zwischen 0 und 100 liegen.', + 'present' => ':attribute muss vorhanden sein.', 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other :value ist.', 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Ihr derzeitiges Passwort ist nicht korrekt', 'dumbpwd' => 'Das Passwort ist zu gebräuchlich.', 'statuslabel_type' => 'Sie müssen einen gültigen Statuslabel-Typ auswählen', + 'custom_field_not_found' => 'Dieses Feld scheint nicht zu existieren. Bitte überprüfen Sie Ihre benutzerdefinierten Feldnamen noch einmal.', + 'custom_field_not_found_on_model' => 'Dieses Feld scheint vorhanden zu sein, ist aber im Feldsatz dieses Asset-Modells nicht verfügbar.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/de-if/account/general.php b/resources/lang/de-if/account/general.php index 41e6a9908..6fea51b4f 100644 --- a/resources/lang/de-if/account/general.php +++ b/resources/lang/de-if/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Bitte lese die API Dokumentation um Informationen über die verfügbaren API-Endpunkte zu bekommen.', 'profile_updated' => 'Konto erfolgreich aktualisiert', 'no_tokens' => 'Sie haben keine persönlichen Zugangsschlüssel erstellt.', + 'enable_sounds' => 'Soundeffekte aktivieren', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/de-if/admin/locations/message.php b/resources/lang/de-if/admin/locations/message.php index 138808be6..edff9d7d5 100644 --- a/resources/lang/de-if/admin/locations/message.php +++ b/resources/lang/de-if/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Standort existiert nicht.', - 'assoc_users' => 'Der Standort kann gerade nicht gelöscht werden, weil mindestens ein Asset oder ein Benutzer damit verbunden ist, da ihm Assets zugeordnet sind, oder er der Hauptstandort für einen anderen Standort ist. Aktualisiere deine Modelle, sodass sie nicht mehr auf diesen Standort verweisen, und probier’s dann nochmal. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Dieser Standort ist mindestens einem Gegenstand zugewiesen und kann nicht gelöscht werden. Bitte entferne die Standortzuweisung bei den jeweiligen Gegenständen und versuche erneut, diesen Standort zu entfernen. ', 'assoc_child_loc' => 'Dieser Standort ist mindestens einem anderen Ort übergeordnet und kann nicht gelöscht werden. Bitte aktualisiere Deine Standorte, so dass dieser Standort nicht mehr verknüpft ist, und versuche es erneut. ', 'assigned_assets' => 'Zugeordnete Assets', diff --git a/resources/lang/de-if/admin/settings/general.php b/resources/lang/de-if/admin/settings/general.php index f162ba2c1..dd7c6ed08 100644 --- a/resources/lang/de-if/admin/settings/general.php +++ b/resources/lang/de-if/admin/settings/general.php @@ -6,7 +6,7 @@ return [ 'ad_domain_help' => 'Dies ist manchmal dasselbe wie Deine E-Mail-Domain, aber nicht immer.', 'ad_append_domain_label' => 'Domänenname anhängen', 'ad_append_domain' => 'Domänenname an das Feld Benutzername anhängen', - 'ad_append_domain_help' => 'Benutzer muss nicht "username@domain.local" eingeben, "username" ist ausreichend.', + 'ad_append_domain_help' => 'Der Benutzer muss nicht "username@domain.local" eingeben, "username" ist ausreichend.', 'admin_cc_email' => 'CC Email', 'admin_cc_email_help' => 'Wenn Du eine Kopie der Rücknahme-/Herausgabe-E-Mails, die an Benutzer gehen, auch an zusätzliche E-Mail-Empfänger versenden möchtest, gebe sie hier ein. Ansonsten lass dieses Feld blank.', 'admin_settings' => 'Admin-Einstellungen', @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app Integration ist optional, allerdings sind Endpunkt und Kanal erforderlich, wenn du sie verwenden möchtet. Um die :app Integration zu konfigurieren, musst du zuerst in deinem :app Account einen eingehenden Webhook erstellen. Klicke auf den :app Integration testen-Knopf, um zu bestätigen, dass die Einstellungen vor dem Speichern korrekt sind. ', 'webhook_integration_help_button' => 'Sobald die :app Einstellungen gespeichert wurden, erscheint eine Schaltfläche zum testen.', 'webhook_test_help' => 'Teste, ob deine :app Integration korrekt konfiguriert ist. DIE AKTUELLEN :app EINSTELLUNGEN MÜSSEN ZUERST GESPEICHERT WERDEN.', + 'shortcuts_enabled' => 'Shortcuts aktivieren', + 'shortcuts_help_text' => 'Windows: Alt + Access-Taste, Mac: Control + Option + Access-Taste', 'snipe_version' => 'Snipe-IT Version', 'support_footer' => 'Support-Link in der Fußzeile ', 'support_footer_help' => 'Lege fest, wer die Links zu Snipe-IT Support-Information und Benutzerhandbuch sieht', diff --git a/resources/lang/de-if/admin/settings/message.php b/resources/lang/de-if/admin/settings/message.php index 1748701be..7c16900f4 100644 --- a/resources/lang/de-if/admin/settings/message.php +++ b/resources/lang/de-if/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, wiederherstellen. Ich bestätige, dass dies alle vorhandenen Daten überschreibt, die derzeit in der Datenbank vorhanden sind. Diese Aktion wird auch alle bestehenden Benutzer abmelden (einschließlich Dir).', 'restore_confirm' => 'Bist Du sicher, dass Du Deine Datenbank aus :filename wiederherstellen möchten?' ], + 'restore' => [ + 'success' => 'Dein Systembackup wurde wiederhergestellt. Bitte melde dich erneut an.' + ], 'purge' => [ 'error' => 'Beim Bereinigen ist ein Fehler augetreten. ', 'validation_failed' => 'Falsche Bereinigungsbestätigung. Bitte gib das Wort "DELETE" im Bestätigungsfeld ein.', diff --git a/resources/lang/de-if/button.php b/resources/lang/de-if/button.php index 9f0bf89dd..b0ef0e593 100644 --- a/resources/lang/de-if/button.php +++ b/resources/lang/de-if/button.php @@ -26,7 +26,7 @@ return [ 'clone' => ':item_type duplizieren', 'edit' => ':item_type bearbeiten', 'delete' => ':item_type löschen', - 'restore' => ':item_type löschen', + 'restore' => ':item_type wiederherstellen', 'create' => 'Neue/s :item_type erstellen', 'checkout' => ':item_type herausgeben', 'checkin' => ':item_type zurücknehmen', diff --git a/resources/lang/de-if/general.php b/resources/lang/de-if/general.php index 9745dd3a0..d2e1b9f3b 100644 --- a/resources/lang/de-if/general.php +++ b/resources/lang/de-if/general.php @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Diese Anwendung läuft im Produktionsmodus mit debugging aktiviert. Dies kann sensible Daten verfügbar machen, wenn Ihre Anwendung öffentlich zugänglich ist. Deaktiviere den Debug-Modus, indem du den APP_DEBUG-Wert in der .env Datei auf false setzt.', 'delete' => 'Löschen', 'delete_confirm' => 'Bist du sicher, dass du :item löschen möchtest?', - 'delete_confirm_no_undo' => 'Möchtest du :item wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.', + 'delete_confirm_no_undo' => 'Bist Du sicher, dass Du :item löschen möchtest? Dies kann nicht rückgängig gemacht werden.', 'deleted' => 'Gelöscht', 'delete_seats' => 'Gelöschte Lizenzen', 'deletion_failed' => 'Löschen fehlgeschlagen', @@ -121,22 +121,22 @@ return [ 'exclude_archived' => 'Archivierte Assets ausschließen', 'exclude_deleted' => 'Gelöschte Assets ausschließen', 'example' => 'Beispiel: ', - 'filastname_format' => 'Initial des VornamenNachname (emustermann@beispiel.de)', - 'firstname_lastname_format' => 'Vorname.Nachname (Erika.Mustermann@beispiel.de)', - 'firstname_lastname_underscore_format' => 'Vorname Nachname (Erika_Mustermann@beispiel.de)', - 'lastnamefirstinitial_format' => 'NachnameInitial des Vornamens (mustermanne@beispiel.de)', - 'firstintial_dot_lastname_format' => 'Initial des Vorname.Nachname (e.mustermann@beispiel.de)', - 'firstname_lastname_display' => 'Vorname Nachname (Jane Smith)', - 'lastname_firstname_display' => 'Nachname Vorname (Smith Jane)', + 'filastname_format' => 'Initial des Vornamen & Nachname (emustermann@example.com)', + 'firstname_lastname_format' => 'Vorname.Nachname (erika.mustermann@example.com)', + 'firstname_lastname_underscore_format' => 'Vorname_Nachname (erika_mustermann@example.com)', + 'lastnamefirstinitial_format' => 'Nachname & Initiale des Vornamens (mustere@example.com)', + 'firstintial_dot_lastname_format' => 'Initiale des Vornamen.Nachname (e.mustermann@example.com)', + 'firstname_lastname_display' => 'Vorname Nachname (Max Mustermann)', + 'lastname_firstname_display' => 'Nachname Vorname (Mustermann Max)', 'name_display_format' => 'Name Anzeigeformat', 'first' => 'Erste', - 'firstnamelastname' => 'VornameNachname (ErikaMustermann@beispiel.de)', - 'lastname_firstinitial' => 'Nachname_Initial des Vornamens (mustermann_e@beispiel.de)', - 'firstinitial.lastname' => 'Initial des Vornamens.Nachname (e.mustermann@beispiel.de)', - 'firstnamelastinitial' => 'Vorname_Initial des Nachnamen (erika_m@beispiel.de)', - 'lastnamefirstname' => 'Nach- und Vorname (mustermann.jana@example.com)', + 'firstnamelastname' => 'Vorname & Nachname (erikamustermann@example.com)', + 'lastname_firstinitial' => 'Nachname_Initial des Vornamens (mustermann_e@example.com)', + 'firstinitial.lastname' => 'Initial des Vornamens.Nachname (e.mustermann@example.com)', + 'firstnamelastinitial' => 'Vorname & Initiale des Nachnamen (erikam@example.com)', + 'lastnamefirstname' => 'Nachname.Vorname (smith.jane@example.com)', 'first_name' => 'Vorname', - 'first_name_format' => 'Vorname (erika@beispiel.de)', + 'first_name_format' => 'Vorname (erika@example.com)', 'files' => 'Dateien', 'file_name' => 'Datei', 'file_type' => 'Dateityp', @@ -156,8 +156,8 @@ return [ 'image_delete' => 'Bild löschen', 'include_deleted' => 'Gelöschte Assets einbeziehen', 'image_upload' => 'Bild hochladen', - 'filetypes_accepted_help' => 'Akzeptierter Dateityp ist :types. Maximal zulässige Upload-Größe ist :size.|Akzeptierte Dateitypen sind :types. Maximal erlaubte Upload-Größe ist :size.', - 'filetypes_size_help' => 'Maximal erlaubte Upload-Größe ist :size.', + 'filetypes_accepted_help' => 'Akzeptierter Dateityp ist :types. Maximal zulässige Größe ist :size.|Akzeptierte Dateitypen sind :types. Maximal erlaubte Hochlade-Größe ist :size.', + 'filetypes_size_help' => 'Die maximal erlaubte Upload-Größe ist :size.', 'image_filetypes_help' => 'Akzeptierte Dateitypen sind jpg, webp, png, gif, svg, und avif. Die maximal zulässige Upload-Größe beträgt :size.', 'unaccepted_image_type' => 'Diese Bilddatei ist nicht lesbar. Akzeptierte Dateitypen sind jpg, webp, png, gif und svg. Der MIME-Type dieser Datei ist: :mimetype.', 'import' => 'Import', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Verfügbare Lizenzen', 'licenses' => 'Lizenzen', 'list_all' => 'Alle auflisten', - 'loading' => 'Wird geladen, bitte warten...', + 'loading' => 'Wird geladen... Bitte warten...', 'lock_passwords' => 'Dieser Feldwert wird in einer Demo-Installation nicht gespeichert.', 'feature_disabled' => 'Diese Funktion wurde für die Demo-Installation deaktiviert.', 'location' => 'Standort', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Unterschrieben von', 'skin' => 'Skin', 'webhook_msg_note' => 'Eine Benachrichtigung wird über den Webhook gesendet', - 'webhook_test_msg' => 'Oh hey! Sieht so aus, als ob Deine :app Integration mit Snipe-IT funktioniert!', + 'webhook_test_msg' => 'Oh hi! Sieht so aus, als ob Deine :app Integration mit Snipe-IT funktioniert!', 'some_features_disabled' => 'Einige Funktionen sind für den DEMO-Modus deaktiviert.', 'site_name' => 'Seitenname', 'state' => 'Bundesland', 'status_labels' => 'Statusbezeichnungen', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Annahmeerklärung', 'supplier' => 'Lieferant', diff --git a/resources/lang/de-if/localizations.php b/resources/lang/de-if/localizations.php index b351a2e49..061b7f779 100644 --- a/resources/lang/de-if/localizations.php +++ b/resources/lang/de-if/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaiisch', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolisch', - 'no-NO'=> 'Norwegisch', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegisch Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persisch', 'pl-PL'=> 'Polnisch', 'pt-PT'=> 'Portugiesisch', diff --git a/resources/lang/de-if/mail.php b/resources/lang/de-if/mail.php index 430ab69fd..94122e1f0 100644 --- a/resources/lang/de-if/mail.php +++ b/resources/lang/de-if/mail.php @@ -88,7 +88,7 @@ return [ 'user' => 'Benutzer', 'username' => 'Benutzername', 'unaccepted_asset_reminder' => 'Sie haben nicht akzeptierte Assets.', - 'welcome' => 'Wilkommen, :name', + 'welcome' => 'Willkommen, :name', 'welcome_to' => 'Willkommen bei :web!', 'your_assets' => 'Deine Assets anzeigen', 'your_credentials' => 'Ihre Snipe-IT Anmeldedaten', diff --git a/resources/lang/de-if/validation.php b/resources/lang/de-if/validation.php index 32b14dbae..217b25687 100644 --- a/resources/lang/de-if/validation.php +++ b/resources/lang/de-if/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'Das Feld :attribute muss mindestens ein Symbol enthalten.', 'uncompromised' => 'Das angegebene :attribute ist in einem Datenleck aufgetaucht. Bitte wählen Sie ein anderes :attribute.', ], + 'percent' => 'Bei einer prozentualen Abschreibung muss der Mindestabschreibungswert zwischen 0 und 100 liegen.', + 'present' => ':attribute muss vorhanden sein.', 'present_if' => 'Das Feld :attribute muss vorhanden sein, wenn :other :value ist.', 'present_unless' => 'Das Feld :attribute muss vorhanden sein, es sei denn, :other ist :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Ihr derzeitiges Passwort ist nicht korrekt', 'dumbpwd' => 'Das Passwort ist zu gebräuchlich.', 'statuslabel_type' => 'Du musst einen gültigen Statuslabel-Typ auswählen', + 'custom_field_not_found' => 'Dieses Feld scheint nicht zu existieren. Bitte überprüfe deine benutzerdefinierten Feldnamen noch einmal.', + 'custom_field_not_found_on_model' => 'Dieses Feld scheint vorhanden zu sein, ist aber im Feldsatz dieses Asset-Modells nicht verfügbar.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/el-GR/account/general.php b/resources/lang/el-GR/account/general.php index 11d113298..1d9739ea1 100644 --- a/resources/lang/el-GR/account/general.php +++ b/resources/lang/el-GR/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/el-GR/admin/locations/message.php b/resources/lang/el-GR/admin/locations/message.php index e1f784000..54138905f 100644 --- a/resources/lang/el-GR/admin/locations/message.php +++ b/resources/lang/el-GR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Η τοποθεσία δεν υπάρχει.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Αυτή η τοποθεσία συσχετίζεται προς το παρόν με τουλάχιστον ένα στοιχείο και δεν μπορεί να διαγραφεί. Ενημερώστε τα στοιχεία σας ώστε να μην αναφέρονται πλέον στην τοποθεσία αυτή και να προσπαθήσετε ξανά.', 'assoc_child_loc' => 'Αυτή η τοποθεσία είναι αυτήν τη στιγμή γονέας τουλάχιστον μιας τοποθεσίας παιδιού και δεν μπορεί να διαγραφεί. Ενημερώστε τις τοποθεσίες σας ώστε να μην αναφέρονται πλέον σε αυτήν την τοποθεσία και δοκιμάστε ξανά.', 'assigned_assets' => 'Αντιστοιχισμένα Στοιχεία Ενεργητικού', diff --git a/resources/lang/el-GR/admin/settings/general.php b/resources/lang/el-GR/admin/settings/general.php index 17e0b7cb9..40ba52dba 100644 --- a/resources/lang/el-GR/admin/settings/general.php +++ b/resources/lang/el-GR/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Μόλις αποθηκεύσετε τις πληροφορίες :app, θα εμφανιστεί ένα κουμπί δοκιμής.', 'webhook_test_help' => 'Ελέγξτε αν η :app ενσωμάτωση σας έχει ρυθμιστεί σωστά. ΠΡΕΠΕΙ ΝΑ ΑΠΟΘΗΚΕΥΣΕΤΕ ΝΑ ΑΝΑΦΕΡΕΤΑΙ :app ΡΥΘΜΙΣΕΙΣ ΠΡΩΤΩΝ.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-It έκδοση', 'support_footer' => 'Σύνδεσμοι Υποσέλιδου Υποστήριξης ', 'support_footer_help' => 'Καθορίστε ποιος βλέπει τους συνδέσμους με τις πληροφορίες υποστήριξης Snipe-IT και το εγχειρίδιο χρήσης', diff --git a/resources/lang/el-GR/admin/settings/message.php b/resources/lang/el-GR/admin/settings/message.php index 02f611d35..68595522e 100644 --- a/resources/lang/el-GR/admin/settings/message.php +++ b/resources/lang/el-GR/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ναι, να το αποκαταστήσω, αναγνωρίζω ότι αυτό θα αντικαταστήσει όλα τα υπάρχοντα δεδομένα που υπάρχουν αυτή τη στιγμή στη βάση δεδομένων. Αυτό θα αποσυνδεθεί επίσης από όλους τους υπάρχοντες χρήστες (συμπεριλαμβανομένων και εσείς).', 'restore_confirm' => 'Είστε βέβαιοι ότι θέλετε να επαναφέρετε τη βάση δεδομένων σας από :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Παρουσιάστηκε ένα σφάλμα κατά την εκκαθάριση. ', 'validation_failed' => 'Η επιβεβαίωση καθαρισμού είναι εσφαλμένη. Παρακαλούμε πληκτρολογήστε τη λέξη «Διαγραφή» στο πλαίσιο επιβεβαίωσης.', diff --git a/resources/lang/el-GR/button.php b/resources/lang/el-GR/button.php index 807565475..4aafe4b4c 100644 --- a/resources/lang/el-GR/button.php +++ b/resources/lang/el-GR/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/el-GR/general.php b/resources/lang/el-GR/general.php index 6cc291397..19dcb6145 100644 --- a/resources/lang/el-GR/general.php +++ b/resources/lang/el-GR/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Αναλώσιμα', 'country' => 'Χώρα', 'could_not_restore' => 'Σφάλμα επαναφοράς :item_type: :error', - 'not_deleted' => 'Το :item_type δεν διαγράφεται έτσι ώστε να μην μπορεί να αποκατασταθεί', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Δημιουργία νέου', 'created' => 'Το αντικείμενο δημιουργήθηκε', 'created_asset' => 'δημιουργία παγίου', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Αυτή η εφαρμογή εκτελείται σε λειτουργία παραγωγής με ενεργοποιημένο τον εντοπισμό σφαλμάτων. Αυτό μπορεί να εκθέσει τα ευαίσθητα δεδομένα, εάν η εφαρμογή σας είναι προσβάσιμη στον έξω κόσμο. Απενεργοποιήσετε την κατάσταση λειτουργίας εντοπισμού σφαλμάτων, ορίζοντας την τιμή APP_DEBUG στο αρχείο .env για να false.', 'delete' => 'Διαγραφή', 'delete_confirm' => 'Επιθυμείτε την διαφραφή :item;', - 'delete_confirm_no_undo' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε :αντικείμενο? Αυτό δεν μπορεί να αναιρεθεί.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Διαγράφηκε', 'delete_seats' => 'Διαγραμμένα καθίσματα', 'deletion_failed' => 'Αποτυχία διαγραφής', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Πρώτο Όνομα Αρχικό (smith_j@example.com)', 'firstinitial.lastname' => 'Πρώτο Αρχικό Όνομα (j.smith@example.com)', 'firstnamelastinitial' => 'Επίθετο Όνομα (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Όνομα', 'first_name_format' => 'Όνομα (jane@example.com)', 'files' => 'Αρχεία', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Διαγραφή εικόνας', 'include_deleted' => 'Συμπερίληψη Διαγραμμένων Αντικειμένων', 'image_upload' => 'Μεταφόρτωση εικόνας', - 'filetypes_accepted_help' => 'Ο τύπος αρχείου είναι :types. Το μέγιστο επιτρεπόμενο μέγεθος μεταφορτώσεων είναι :size."Οι αποδεκτοί τύποι αρχείων είναι :types. Το μέγιστο επιτρεπόμενο μέγεθος αποστολής είναι :size.', - 'filetypes_size_help' => 'Το μέγιστο επιτρεπόμενο μέγεθος ανεβάσματος είναι :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Αυτό το αρχείο εικόνας δεν ήταν αναγνώσιμο. Οι αποδεκτοί τύποι αρχείων είναι jpg, webp, png, gif, και svg. Ο τύπος mime αυτού του αρχείου είναι: :mimetype.', 'import' => 'Εισαγωγή', 'import_this_file' => 'Χάρτης πεδίων και επεξεργασία αυτού του αρχείου', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Διαθέσιμες άδειες', 'licenses' => 'Άδειες', 'list_all' => 'Λίστα όλων', - 'loading' => 'Φόρτωση... παρακαλώ περιμένετε...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Αυτή η τιμή πεδίου δεν θα αποθηκευτεί σε μια εγκατάσταση επίδειξης.', 'feature_disabled' => 'Αυτή η λειτουργία έχει απενεργοποιηθεί για την εγκατάσταση επίδειξης.', 'location' => 'Τοποθεσία', @@ -193,7 +193,7 @@ return [ 'logout' => 'Αποσύνδεση', 'lookup_by_tag' => 'Αναζήτηση με ετικέτα περιουσιακών στοιχείων', 'maintenances' => 'Συντήρηση', - 'manage_api_keys' => 'Διαχείριση Κλειδιών Api', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Κατασκευαστής', 'manufacturers' => 'Κατασκευαστές', 'markdown' => 'Αυτό το πεδίο επιτρέπει Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Επιλογή Όλων', 'search' => 'Αναζήτηση', 'select_category' => 'Επιλέξτε μια κατηγορία', - 'select_datasource' => 'Επιλέξτε ένα Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Επιλέξτε ένα Τμήμα', 'select_depreciation' => 'Επιλέξτε τύπο απόσβεσης', 'select_location' => 'Επιλέξτε τοποθεσία', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Υπογραφή Από', 'skin' => 'Θέμα', 'webhook_msg_note' => 'Μια ειδοποίηση θα σταλεί μέσω webhook', - 'webhook_test_msg' => 'Ωχ χάλι! Φαίνεται σαν την ενσωμάτωσή σας :app με Snipe-IT λειτουργεί!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'ΛΕΙΤΟΥΡΓΙΑ DEMO: Ορισμένες λειτουργίες είναι απενεργοποιημένες για αυτήν την εγκατάσταση.', 'site_name' => 'Όνομα ιστότοπου', 'state' => 'Κατάσταση', 'status_labels' => 'Ετικέτα Κατάστασης', + 'status_label' => 'Status Label', 'status' => 'Κατάσταση', 'accept_eula' => 'Συμφωνία Αποδοχής', 'supplier' => 'Προμηθευτής', @@ -339,16 +340,16 @@ return [ 'view_all' => 'προβολή όλων', 'hide_deleted' => 'Απόκρυψη Διαγραμμένων', 'email' => 'Ηλεκτρονικό ταχυδρομείο', - 'do_not_change' => 'Να Μη Γίνει Αλλαγή', - 'bug_report' => 'Αναφορά σφάλματος', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Εγχειρίδιο Χρήστη', 'setup_step_1' => 'Βήμα 1', 'setup_step_2' => 'Βήμα 2', 'setup_step_3' => 'Βήμα 3', 'setup_step_4' => '4Ο Βήμα.', 'setup_config_check' => 'Έλεγχος Ρύθμισης', - 'setup_create_database' => 'Δημιουργία Πινάκων Βάσης Δεδομένων', - 'setup_create_admin' => 'Δημιουργία Χρήστη Διαχειριστή', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Ολοκληρώθηκε!', 'bulk_edit_about_to' => 'Πρόκειται να επεξεργαστείτε τα ακόλουθα: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/el-GR/localizations.php b/resources/lang/el-GR/localizations.php index 739d55b19..d0b955c8a 100644 --- a/resources/lang/el-GR/localizations.php +++ b/resources/lang/el-GR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Μαλαισιανά', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Μογγολικά', - 'no-NO'=> 'Νορβηγικά', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Περσικά', 'pl-PL'=> 'Πολωνικά', 'pt-PT'=> 'Πορτογαλικά', diff --git a/resources/lang/el-GR/validation.php b/resources/lang/el-GR/validation.php index fd93f6d97..9f4921e2d 100644 --- a/resources/lang/el-GR/validation.php +++ b/resources/lang/el-GR/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Πρέπει να υπάρχει το πεδίο ιδιοτήτων: attribute.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Ο τρέχων κωδικός πρόσβασης είναι εσφαλμένος', 'dumbpwd' => 'Αυτός ο κωδικός πρόσβασης είναι πολύ συνηθισμένος.', 'statuslabel_type' => 'Πρέπει να επιλέξετε έναν έγκυρο τύπο ετικέτας κατάστασης', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/en-GB/account/general.php b/resources/lang/en-GB/account/general.php index e33054652..d55d06c7b 100644 --- a/resources/lang/en-GB/account/general.php +++ b/resources/lang/en-GB/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/en-GB/admin/locations/message.php b/resources/lang/en-GB/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/en-GB/admin/locations/message.php +++ b/resources/lang/en-GB/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/en-GB/admin/settings/general.php b/resources/lang/en-GB/admin/settings/general.php index 32eb51f29..2762238ec 100644 --- a/resources/lang/en-GB/admin/settings/general.php +++ b/resources/lang/en-GB/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/en-GB/admin/settings/message.php b/resources/lang/en-GB/admin/settings/message.php index c9b0f3421..c91575144 100644 --- a/resources/lang/en-GB/admin/settings/message.php +++ b/resources/lang/en-GB/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please log in again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/en-GB/button.php b/resources/lang/en-GB/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/en-GB/button.php +++ b/resources/lang/en-GB/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 9b9197d3e..353085d09 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', + 'not_deleted' => 'The :item_type was not deleted and therefore cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licences available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hello! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create an admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/en-GB/localizations.php b/resources/lang/en-GB/localizations.php index 2dfb05a2a..ae75588e7 100644 --- a/resources/lang/en-GB/localizations.php +++ b/resources/lang/en-GB/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/en-GB/validation.php b/resources/lang/en-GB/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/en-GB/validation.php +++ b/resources/lang/en-GB/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/en-ID/account/general.php b/resources/lang/en-ID/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/en-ID/account/general.php +++ b/resources/lang/en-ID/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/en-ID/admin/locations/message.php b/resources/lang/en-ID/admin/locations/message.php index e74310ae8..cabfa697b 100644 --- a/resources/lang/en-ID/admin/locations/message.php +++ b/resources/lang/en-ID/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokasi tidak ada.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Saat ini kategori ini terkait dengan setidaknya satu pengguna dan tidak dapat dihapus. Silahkan perbaharui pengguna anda untuk tidak lagi tereferensi dengan kategori ini dan coba lagi. ', 'assoc_child_loc' => 'Lokasi ini saat ini merupakan induk dari setidaknya satu lokasi anak dan tidak dapat dihapus. Perbarui lokasi Anda agar tidak lagi merujuk lokasi ini dan coba lagi. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/en-ID/admin/models/message.php b/resources/lang/en-ID/admin/models/message.php index 571d203f8..4b69b6df0 100644 --- a/resources/lang/en-ID/admin/models/message.php +++ b/resources/lang/en-ID/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'Model ini saat ini dikaitkan dengan satu atau lebih aset dan tidak dapat dihapus. Harap hapus asetnya, lalu coba hapus lagi. ', - 'invalid_category_type' => 'The category must be an asset category.', + 'invalid_category_type' => 'This category must be an asset category.', 'create' => array( 'error' => 'Model tidak dibuat, silahkan dicoba lagi.', diff --git a/resources/lang/en-ID/admin/settings/general.php b/resources/lang/en-ID/admin/settings/general.php index 21461862f..bcc02ebef 100644 --- a/resources/lang/en-ID/admin/settings/general.php +++ b/resources/lang/en-ID/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Versi Snipe-IT', 'support_footer' => 'Link footer pendukung ', 'support_footer_help' => 'Tentukan siapa yang melihat tautan ke informasi pendukung dan panduan pengguna Snipe-IT', diff --git a/resources/lang/en-ID/admin/settings/message.php b/resources/lang/en-ID/admin/settings/message.php index 7ce0ee8d8..259409df8 100644 --- a/resources/lang/en-ID/admin/settings/message.php +++ b/resources/lang/en-ID/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please log in again.' + ], 'purge' => [ 'error' => 'Terjadi kesalahan saat membersihkan. ', 'validation_failed' => 'Konfirmasi pembersihan Anda salah Ketikkan kata "HAPUS" di kotak konfirmasi.', diff --git a/resources/lang/en-ID/button.php b/resources/lang/en-ID/button.php index fcaab0cbf..dc03568d1 100644 --- a/resources/lang/en-ID/button.php +++ b/resources/lang/en-ID/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/en-ID/general.php b/resources/lang/en-ID/general.php index 7a7ba7600..daf32dd29 100644 --- a/resources/lang/en-ID/general.php +++ b/resources/lang/en-ID/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Dapat dikonsumsi', 'country' => 'Negara', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', + 'not_deleted' => 'The :item_type was not deleted and therefore cannot be restored', 'create' => 'Buat baru', 'created' => 'Item telah dibuat', 'created_asset' => 'buat aset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Aplikasi ini berjalan dalam mode produksi dengan debugging diaktifkan. Hal ini dapat mengekspos data sensitif jika aplikasi Anda dapat diakses oleh dunia luar. Nonaktifkan mode debug dengan menetapkan nilai APP_DEBUG value in your .env file to false.', 'delete' => 'Hapus', 'delete_confirm' => 'Apa Anda yakin untuk menghapus :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', + 'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.', 'deleted' => 'Dihapus', 'delete_seats' => 'Tempat dihapus', 'deletion_failed' => 'Deletion failed', @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Unggah Gambar', 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', 'filetypes_size_help' => 'The maximum upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Impor', 'import_this_file' => 'Map fields and process this file', @@ -279,6 +279,7 @@ return [ 'site_name' => 'Nama Situs', 'state' => 'Negara', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Pemasok', @@ -348,7 +349,7 @@ return [ 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', 'setup_create_database' => 'Create database tables', - 'setup_create_admin' => 'Create admin user', + 'setup_create_admin' => 'Create an admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Memeriksa', diff --git a/resources/lang/en-ID/localizations.php b/resources/lang/en-ID/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/en-ID/localizations.php +++ b/resources/lang/en-ID/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/en-ID/validation.php b/resources/lang/en-ID/validation.php index 425b7445f..b29466672 100644 --- a/resources/lang/en-ID/validation.php +++ b/resources/lang/en-ID/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Bidang atribut harus ada.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Kata sandi anda saat ini salah', 'dumbpwd' => 'Kata sandi itu terlalu umum.', 'statuslabel_type' => 'Anda harus pilih jenis label status yang valid', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/en-US/admin/models/message.php b/resources/lang/en-US/admin/models/message.php index f61a2c535..ae3bc34ee 100644 --- a/resources/lang/en-US/admin/models/message.php +++ b/resources/lang/en-US/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'WARNING! The asset model for this item is invalid or missing!', 'no_association_fix' => 'This will break things in weird and horrible ways. Edit this asset now to assign it a model.', 'assoc_users' => 'This model is currently associated with one or more assets and cannot be deleted. Please delete the assets, and then try deleting again. ', - 'invalid_category_type' => 'The category must be an asset category.', + 'invalid_category_type' => 'This category must be an asset category.', 'create' => array( 'error' => 'Model was not created, please try again.', diff --git a/resources/lang/en-US/admin/settings/message.php b/resources/lang/en-US/admin/settings/message.php index 24e2d292c..c91575144 100644 --- a/resources/lang/en-US/admin/settings/message.php +++ b/resources/lang/en-US/admin/settings/message.php @@ -15,7 +15,7 @@ return [ 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], 'restore' => [ - 'success' => 'Your system backup has been restored. Please login again.' + 'success' => 'Your system backup has been restored. Please log in again.' ], 'purge' => [ 'error' => 'An error has occurred while purging. ', diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 444ed5408..42ca4cb96 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', + 'not_deleted' => 'The :item_type was not deleted and therefore cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', + 'delete_confirm_no_undo' => 'Are you sure, you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -158,7 +158,7 @@ return [ 'image_upload' => 'Upload Image', 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', 'filetypes_size_help' => 'The maximum upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted Filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -349,7 +349,7 @@ return [ 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', 'setup_create_database' => 'Create database tables', - 'setup_create_admin' => 'Create admin user', + 'setup_create_admin' => 'Create an admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/es-CO/account/general.php b/resources/lang/es-CO/account/general.php index 2520857ca..4280c37db 100644 --- a/resources/lang/es-CO/account/general.php +++ b/resources/lang/es-CO/account/general.php @@ -10,6 +10,8 @@ return array( 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoints) del API y documentación adicional.', - 'profile_updated' => 'Cuenta actualizada exitosamente', + 'profile_updated' => 'La cuenta fue actualizada exitosamente', 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', + 'enable_sounds' => 'Habilitar efectos de sonido', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/es-CO/admin/accessories/message.php b/resources/lang/es-CO/admin/accessories/message.php index 1de15d016..9f2ab0ae9 100644 --- a/resources/lang/es-CO/admin/accessories/message.php +++ b/resources/lang/es-CO/admin/accessories/message.php @@ -13,7 +13,7 @@ return array( 'update' => array( 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', - 'success' => 'Accesorio creado satisfactoriamente.' + 'success' => 'El accesorio fue actualizado con éxito.' ), 'delete' => array( diff --git a/resources/lang/es-CO/admin/companies/message.php b/resources/lang/es-CO/admin/companies/message.php index fd4d7c488..2eccf6361 100644 --- a/resources/lang/es-CO/admin/companies/message.php +++ b/resources/lang/es-CO/admin/companies/message.php @@ -10,7 +10,7 @@ return [ ], 'update' => [ 'error' => 'La compañía no fue actualizada, por favor, inténtalo de nuevo', - 'success' => 'Compañía actualizada con éxito.', + 'success' => 'Compañía actualizada correctamente.', ], 'delete' => [ 'confirm' => '¿Está seguro de que quiere eliminar esta compañía?', diff --git a/resources/lang/es-CO/admin/custom_fields/general.php b/resources/lang/es-CO/admin/custom_fields/general.php index 2f5effd8e..71d2aa2e0 100644 --- a/resources/lang/es-CO/admin/custom_fields/general.php +++ b/resources/lang/es-CO/admin/custom_fields/general.php @@ -41,7 +41,7 @@ return [ 'about_custom_fields_title' => 'Acerca de campos personalizados', 'about_custom_fields_text' => 'Los campos personalizados le permiten añadir atributos arbitrarios a los activos.', 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', - 'make_optional' => 'Requerido - haga clic para hacer opcional', + 'make_optional' => 'Requerido - haga clic para hacerlo opcional', 'make_required' => 'Opcional - haga clic para hacer necesario', 'reorder' => 'Reordenar', 'db_field' => 'Campo en base de datos', diff --git a/resources/lang/es-CO/admin/departments/table.php b/resources/lang/es-CO/admin/departments/table.php index d857c08c6..8a6b41c31 100644 --- a/resources/lang/es-CO/admin/departments/table.php +++ b/resources/lang/es-CO/admin/departments/table.php @@ -7,5 +7,5 @@ return array( 'manager' => 'Supervisor', 'location' => 'Ubicación', 'create' => 'Crear Departamento', - 'update' => 'Actualizar Departamento', + 'update' => 'Actualizar departamento', ); diff --git a/resources/lang/es-CO/admin/hardware/general.php b/resources/lang/es-CO/admin/hardware/general.php index cd77f1626..c99c15692 100644 --- a/resources/lang/es-CO/admin/hardware/general.php +++ b/resources/lang/es-CO/admin/hardware/general.php @@ -4,7 +4,7 @@ return [ 'about_assets_title' => 'Acerca de los activos', 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', - 'asset' => 'Equipo', + 'asset' => 'Activo', 'bulk_checkout' => 'Asignar activos', 'bulk_checkin' => 'Ingresar activos', 'checkin' => 'Ingresar activo', @@ -21,18 +21,18 @@ return [ 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', 'requestable_status_warning' => 'No cambiar el estado solicitable', - 'restore' => 'Restaurar equipo', + 'restore' => 'Restaurar activo', 'pending' => 'Pendiente', 'undeployable' => 'No utilizable', 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que no es desplegable y no puede ser revisado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Tiene un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los ítems al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', + 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los elementos al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', - 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando nombre de usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor vea abajo para más detalles.', diff --git a/resources/lang/es-CO/admin/hardware/message.php b/resources/lang/es-CO/admin/hardware/message.php index a34ac3418..29f0bd572 100644 --- a/resources/lang/es-CO/admin/hardware/message.php +++ b/resources/lang/es-CO/admin/hardware/message.php @@ -34,7 +34,7 @@ return [ 'audit' => [ 'error' => 'Auditoría de activos fallida: :error ', - 'success' => 'Auditoría de activos registrada con éxito.', + 'success' => 'Auditoría de activos registrada correctamente.', ], @@ -51,12 +51,12 @@ return [ ], 'import' => [ - 'import_button' => 'Proceso para importar', + 'import_button' => 'Importar', 'error' => 'Algunos artículos no importaron correctamente.', - 'errorDetail' => 'Los siguientes artículos no fueron importados debido a errores.', + 'errorDetail' => 'Los siguientes elementos no fueron importados debido a errores.', 'success' => 'Su archivo ha sido importado', 'file_delete_success' => 'Su archivo se ha eliminado correctamente', - 'file_delete_error' => 'El archivo no pudo ser eliminado', + 'file_delete_error' => 'El archivo no se pudo eliminar', 'file_missing' => 'Falta el archivo seleccionado', 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', 'content_row_has_malformed_characters' => 'Uno o más atributos en la primera fila de contenido contienen caracteres UTF-8 mal formados', diff --git a/resources/lang/es-CO/admin/kits/general.php b/resources/lang/es-CO/admin/kits/general.php index 8a910dbee..4632a913e 100644 --- a/resources/lang/es-CO/admin/kits/general.php +++ b/resources/lang/es-CO/admin/kits/general.php @@ -23,17 +23,17 @@ return [ 'update_appended_model' => 'Actualizar modelo añadido', 'license_error' => 'Licencia ya adjunta al kit', 'license_added_success' => 'Licencia añadida correctamente', - 'license_updated' => 'La licencia se ha actualizado correctamente', + 'license_updated' => 'La licencia fue actualizada correctamente', 'license_none' => 'La licencia no existe', 'license_detached' => 'Licencia fue separada con éxito', 'consumable_added_success' => 'Consumible añadido correctamente', - 'consumable_updated' => 'Consumible se ha actualizado correctamente', + 'consumable_updated' => 'El consumible fue actualizado correctamente', 'consumable_error' => 'Consumible ya conectado al kit', 'consumable_deleted' => 'El borrado fue exitoso', 'consumable_none' => 'El consumible no existe', 'consumable_detached' => 'Consumible fue separado con éxito', 'accessory_added_success' => 'Accesorio añadido correctamente', - 'accessory_updated' => 'El accesorio se ha actualizado correctamente', + 'accessory_updated' => 'El accesorio fue actualizado correctamente', 'accessory_detached' => 'Accesorio fue separado con éxito', 'accessory_error' => 'El accesorio ya está conectado al kit', 'accessory_deleted' => 'El borrado fue exitoso', @@ -42,9 +42,9 @@ return [ 'checkout_error' => 'Error al asignar', 'kit_none' => 'El kit no existe', 'kit_created' => 'Kit creado correctamente', - 'kit_updated' => 'Kit actualizado correctamente', + 'kit_updated' => 'El kit fue actualizado correctamente', 'kit_not_found' => 'Kit no encontrado', 'kit_deleted' => 'Kit eliminado correctamente', - 'kit_model_updated' => 'El modelo se ha actualizado correctamente', + 'kit_model_updated' => 'El modelo fue actualizado correctamente', 'kit_model_detached' => 'Modelo fue separado con éxito', ]; diff --git a/resources/lang/es-CO/admin/labels/message.php b/resources/lang/es-CO/admin/labels/message.php index 6f03c9469..01006397c 100644 --- a/resources/lang/es-CO/admin/labels/message.php +++ b/resources/lang/es-CO/admin/labels/message.php @@ -2,9 +2,9 @@ return [ - 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, tiene :actual.', - 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtuvo :actual.', - 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtuvo :actual.', + 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtenido :actual.', 'does_not_exist' => 'La etiqueta no existe', diff --git a/resources/lang/es-CO/admin/licenses/message.php b/resources/lang/es-CO/admin/licenses/message.php index 4cab6208d..17417a13a 100644 --- a/resources/lang/es-CO/admin/licenses/message.php +++ b/resources/lang/es-CO/admin/licenses/message.php @@ -4,7 +4,7 @@ return array( 'does_not_exist' => 'La licencia no existe o no tiene permiso para verla.', 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', - 'asset_does_not_exist' => 'El activo que está intentando asociar con esta licencia no existe.', + 'asset_does_not_exist' => 'El activo que intenta asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', diff --git a/resources/lang/es-CO/admin/locations/message.php b/resources/lang/es-CO/admin/locations/message.php index 74716ab7c..05fd77702 100644 --- a/resources/lang/es-CO/admin/locations/message.php +++ b/resources/lang/es-CO/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'La ubicación no existe.', - 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assigned_assets' => 'Activos asignados', @@ -11,7 +11,7 @@ return array( 'create' => array( - 'error' => 'La ubicación no pudo ser creada, por favor inténtalo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor, inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-CO/admin/locations/table.php b/resources/lang/es-CO/admin/locations/table.php index 19a6fd38f..c1dfce8c0 100644 --- a/resources/lang/es-CO/admin/locations/table.php +++ b/resources/lang/es-CO/admin/locations/table.php @@ -2,7 +2,7 @@ return [ 'about_locations_title' => 'Acerca de las ubicaciones', - 'about_locations' => 'Las ubicaciones son utilizadas para hacer seguimiento de la información sobre ubicación de usuarios, activos, y otros ítems', + 'about_locations' => 'Las ubicaciones se utilizan para hacer un seguimiento de la ubicación de usuarios, activos y otros elementos', 'assets_rtd' => 'Activos', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Activos asignados', 'id' => 'ID', @@ -35,8 +35,8 @@ return [ 'asset_expected_checkin' => 'Fecha esperada de devolución', 'date' => 'Fecha:', 'phone' => 'Teléfono ubicación', - 'signed_by_asset_auditor' => 'Firmado por (Juego de Acciones):', - 'signed_by_finance_auditor' => 'Firmado por (Monitor de Finanzas):', - 'signed_by_location_manager' => 'Firmado por (Administrador de ubicación):', + 'signed_by_asset_auditor' => 'Firmado por (Auditor de Activos):', + 'signed_by_finance_auditor' => 'Firmado por (Auditor de Finanzas):', + 'signed_by_location_manager' => 'Firmado por (Supervisor de la ubicación):', 'signed_by' => 'Firmado por:', ]; diff --git a/resources/lang/es-CO/admin/settings/general.php b/resources/lang/es-CO/admin/settings/general.php index b0cb984c1..b377fe74d 100644 --- a/resources/lang/es-CO/admin/settings/general.php +++ b/resources/lang/es-CO/admin/settings/general.php @@ -6,7 +6,7 @@ return [ 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Añadir nombre de dominio al campo de nombre de usuario', - 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', + 'ad_append_domain_help' => 'El usuario no necesita escribir "usuario@dominio.local", puede escribir únicamente "usuario".', 'admin_cc_email' => 'Copiar en correo electrónico', 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administración', @@ -110,13 +110,13 @@ return [ 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de contraseña LDAP', 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', - 'ldap_username_field' => 'Campo Usuario', + 'ldap_username_field' => 'Campo nombre de usuario', 'ldap_lname_field' => 'Apellidos', 'ldap_fname_field' => 'Nombre LDAP', 'ldap_auth_filter_query' => 'Consulta de autenticación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Bandera activa LDAP', - 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles items, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', + 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles elementos, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', 'ldap_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'LDAP Email', 'ldap_test' => 'Probar LDAP', @@ -127,7 +127,7 @@ return [ 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', - 'login_success' => '¿Éxito?', + 'login_success' => '¿Exitoso?', 'login_user_agent' => 'Agente de usuario', 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de acceso', @@ -215,9 +215,11 @@ return [ 'webhook_endpoint' => 'Endpoint de :app', 'webhook_integration' => ':app Ajustes', 'webhook_test' =>'Probar integración con :app', - 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo, el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en su cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', + 'shortcuts_enabled' => 'Habilitar accesos directos', + 'shortcuts_help_text' => 'Windows: Alt + tecla de acceso, Mac: Control + Opción + Clave de acceso', 'snipe_version' => 'Versión de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifique quién ve los enlaces a la información de Soporte de Snipe-IT y Manual de Usuarios', @@ -231,7 +233,7 @@ return [ 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Sobre ajustes', - 'about_settings_text' => 'Estos ajustes le permiten personalizar ciertos aspectos de su instalación.', + 'about_settings_text' => 'Estas configuraciones le permiten personalizar ciertos aspectos de su instalación.', 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de la etiqueta (pulgadas)', 'next_auto_tag_base' => 'Siguiente incremento automático', @@ -334,7 +336,7 @@ return [ 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', - 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', + 'create_admin_redirect' => '¡Haga clic aquí para acceder a su aplicación!', 'setup_migrations' => 'Migraciones de base de datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', diff --git a/resources/lang/es-CO/admin/settings/message.php b/resources/lang/es-CO/admin/settings/message.php index 2b25da1f5..709b68b25 100644 --- a/resources/lang/es-CO/admin/settings/message.php +++ b/resources/lang/es-CO/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Sí, restaurarlo. Reconozco que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], + 'restore' => [ + 'success' => 'Su copia de respaldo del sistema ha sido restaurada. Por favor, inicie sesión nuevamente.' + ], 'purge' => [ 'error' => 'Se ha producido un error al purgar. ', 'validation_failed' => 'Su confirmación de purga es incorrecta. Por favor, escriba la palabra "DELETE" en el cuadro de confirmación.', diff --git a/resources/lang/es-CO/admin/suppliers/table.php b/resources/lang/es-CO/admin/suppliers/table.php index d5f809097..c8e508250 100644 --- a/resources/lang/es-CO/admin/suppliers/table.php +++ b/resources/lang/es-CO/admin/suppliers/table.php @@ -2,7 +2,7 @@ return array( 'about_suppliers_title' => 'Acerca de Proveedores', - 'about_suppliers_text' => 'Los proveedores se utilizan para rastrear la fuente de los artículos', + 'about_suppliers_text' => 'Los proveedores se utilizan para hacer seguimiento al origen de los elementos', 'address' => 'Dirección del proveedor', 'assets' => 'Activos', 'city' => 'Ciudad', diff --git a/resources/lang/es-CO/admin/users/general.php b/resources/lang/es-CO/admin/users/general.php index b584326de..09e9a9b02 100644 --- a/resources/lang/es-CO/admin/users/general.php +++ b/resources/lang/es-CO/admin/users/general.php @@ -12,7 +12,7 @@ return [ 'edit' => 'Editar usuario', 'filetype_info' => 'Los tipos de archivo permitidos son png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, y rar.', 'history_user' => 'Historial de :name', - 'info' => 'Info', + 'info' => 'Información', 'restore_user' => 'Haga clic aquí para restaurarlos.', 'last_login' => 'Último acceso', 'ldap_config_text' => 'Los ajustes de configuración LDAP se pueden encontrar Admin > Configuración. La ubicación (opcional) seleccionada se establecerá para todos los usuarios importados.', diff --git a/resources/lang/es-CO/admin/users/message.php b/resources/lang/es-CO/admin/users/message.php index d9fe92f07..73e8c8bff 100644 --- a/resources/lang/es-CO/admin/users/message.php +++ b/resources/lang/es-CO/admin/users/message.php @@ -49,10 +49,10 @@ return array( 'cannot_delete_yourself' => 'Nos sentiríamos muy mal si usted se eliminara, por favor reconsidérelo.', 'incorrect_user_accepted' => 'El elemento que ha intentado aceptar no fue asignado a usted.', 'ldap_could_not_connect' => 'No se pudo conectar al servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', - 'ldap_could_not_bind' => 'No se pudo enlazar al servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP: ', + 'ldap_could_not_bind' => 'No se ha podido vincular al servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP: ', 'ldap_could_not_search' => 'No se pudo buscar en el servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', 'ldap_could_not_get_entries' => 'No se han podido obtener entradas del servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', - 'password_ldap' => 'La contraseña de esta cuenta es administrada por LDAP/Active Directory. Póngase en contacto con su departamento de TI para cambiar su contraseña. ', + 'password_ldap' => 'La contraseña para esta cuenta es administrada por LDAP / Active Directory. Póngase en contacto con su departamento de TI para cambiar su contraseña. ', ), 'deletefile' => array( diff --git a/resources/lang/es-CO/admin/users/table.php b/resources/lang/es-CO/admin/users/table.php index a3fd73969..9b782664d 100644 --- a/resources/lang/es-CO/admin/users/table.php +++ b/resources/lang/es-CO/admin/users/table.php @@ -5,16 +5,16 @@ return array( 'allow' => 'Permitir', 'checkedout' => 'Equipos', 'created_at' => 'Creado', - 'createuser' => 'Crear Usuario', + 'createuser' => 'Crear usuario', 'deny' => 'Denegar', 'email' => 'Correo electrónico', 'employee_num' => 'Nro. Empleado', 'first_name' => 'Nombre', 'groupnotes' => 'Seleccione un grupo para asignar al usuario, recuerde que un usuario asume los permisos del grupo al que se le asigna. Use ctrl+click (o cmd+click en MacOS) para anular la selección de grupos.', 'id' => 'Id', - 'inherit' => 'Heredar', + 'inherit' => 'Hereda de', 'job' => 'Cargo', - 'last_login' => 'Último acceso', + 'last_login' => 'Último inicio de sesión', 'last_name' => 'Apellidos', 'location' => 'Ubicación', 'lock_passwords' => 'Los detalles de inicio de sesión no pueden ser cambiados en esta instalación.', @@ -33,7 +33,7 @@ return array( 'to_restore_them' => 'para restaurarlos.', 'total_assets_cost' => "Coste total de activos", 'updateuser' => 'Actualizar usuario', - 'username' => 'Usuario', + 'username' => 'Nombre de usuario', 'user_deleted_text' => 'Este usuario ha sido marcado como eliminado.', 'username_note' => '(Esto se utiliza sólo para enlazar Active Directory, no para iniciar sesión.)', 'cloneuser' => 'Clonar usuario', diff --git a/resources/lang/es-CO/auth/message.php b/resources/lang/es-CO/auth/message.php index b954ab0eb..2f2ffe9ec 100644 --- a/resources/lang/es-CO/auth/message.php +++ b/resources/lang/es-CO/auth/message.php @@ -19,7 +19,7 @@ return array( ), 'signin' => array( - 'error' => 'Hubo un problema al intentar iniciar sesión, por favor inténtelo de nuevo.', + 'error' => 'Ha habido un problema al iniciar sesión. Por favor, inténtelo de nuevo.', 'success' => 'Ha iniciado sesión exitosamente.', ), @@ -29,17 +29,17 @@ return array( ), 'signup' => array( - 'error' => 'Hubo un problema al intentar crear tu cuenta. Por favor, inténtalo de nuevo.', + 'error' => 'Hubo un problema al crear la cuenta. Por favor, inténtelo de nuevo.', 'success' => 'Cuenta creada correctamente.', ), 'forgot-password' => array( - 'error' => 'Hubo un problema al intentar restablecer el código de contraseña, por favor inténtalo de nuevo.', + 'error' => 'Ha habido un problema al obtener un código de restablecimiento de la contraseña. Por favor, inténtelo de nuevo.', 'success' => 'Si esa dirección de correo electrónico existe en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ), 'forgot-password-confirm' => array( - 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor, inténtelo de nuevo.', 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-CO/button.php b/resources/lang/es-CO/button.php index 34ab29bde..68cb24a8b 100644 --- a/resources/lang/es-CO/button.php +++ b/resources/lang/es-CO/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clonar :item_type', 'edit' => 'Editar :item_type', 'delete' => 'Eliminar :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restaurar :item_type', 'create' => 'Crear nuevo :item_type', 'checkout' => 'Asignar :item_type', 'checkin' => 'Ingresar :item_type', diff --git a/resources/lang/es-CO/general.php b/resources/lang/es-CO/general.php index b2be8d9e0..73870947f 100644 --- a/resources/lang/es-CO/general.php +++ b/resources/lang/es-CO/general.php @@ -1,7 +1,7 @@ 'Reestablecer 2FA', + '2FA_reset' => 'Restablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha de aceptación', @@ -29,14 +29,14 @@ return [ 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', - 'audit' => 'Auditoría', + 'audit' => 'Auditar', 'audit_report' => 'Registro de auditoría', 'assets' => 'Activos', 'assets_audited' => 'activos auditados', 'assets_checked_in_count' => 'activos ingresados', 'assets_checked_out_count' => 'activos asignados', 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', - 'assigned_date' => 'Fecha asignada', + 'assigned_date' => 'Fecha de asignación', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', 'avatar_delete' => 'Eliminar Avatar', @@ -44,7 +44,7 @@ return [ 'back' => 'Atrás', 'bad_data' => 'No se ha encontrado nada. ¿Tal vez datos erróneos?', 'bulkaudit' => 'Auditoría masiva', - 'bulkaudit_status' => 'Estado de auditoría', + 'bulkaudit_status' => 'Estado de la auditoría', 'bulk_checkout' => 'Asignación masiva', 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Eliminar en masa', @@ -66,7 +66,7 @@ return [ 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', - 'click_here' => 'Haz clic aquí', + 'click_here' => 'Haga clic aquí', 'clear_selection' => 'Borrar selección', 'companies' => 'Compañías', 'company' => 'Compañía', @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumibles', 'country' => 'País', 'could_not_restore' => 'Error al restaurar :item_type: :error', - 'not_deleted' => 'El :item_type no está borrado por lo que no puede ser restaurado', + 'not_deleted' => ':item_type no está eliminado; por lo tanto, no se puede restaurar', 'create' => 'Crear nuevo', 'created' => 'Artículo creado', 'created_asset' => 'activo creado', @@ -95,10 +95,10 @@ return [ 'days_to_next_audit' => 'Días a la siguiente auditoría', 'date' => 'Fecha', 'debug_warning' => '¡Alerta!', - 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con depuración habilitada. Esto puede exponer datos sensibles si su aplicación es accesible al mundo exterior. Deshabilita el modo de depuración configurando el valor APP_DEBUG en tu . nv archivo a false.', + 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con depuración habilitada. Esto puede exponer datos sensibles si su aplicación es accedida desde el mundo exterior. Deshabilite el modo de depuración configurando el valor APP_DEBUG en su archivo .env a false.', 'delete' => 'Eliminar', 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', - 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', + 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no puede deshacerse.', 'deleted' => 'Eliminado', 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', - 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', + 'lastnamefirstname' => 'Apellido.Nombre (smith.jane@example.com)', 'first_name' => 'Nombres', 'first_name_format' => 'Nombre (jane@ejemplo.com)', 'files' => 'Archivos', @@ -148,7 +148,7 @@ return [ 'github_markdown' => 'Este campo acepta Github con sabor a markdown.', 'groups' => 'Grupos', 'gravatar_email' => 'Dirección de correo Gravatar', - 'gravatar_url' => 'Cambia tu avatar en Gravatar.com.', + 'gravatar_url' => 'Cambie su avatar en Gravatar.com.', 'history' => 'Historial', 'history_for' => 'Historial para', 'id' => 'ID', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Borrar imagen', 'include_deleted' => 'Incluir activos eliminados', 'image_upload' => 'Cargar imagen', - 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido para subir es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', - 'filetypes_size_help' => 'El tamaño máximo permitido para subir es :size.', - 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', + 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido para cargar es :size.', + 'filetypes_size_help' => 'El tamaño máximo permitido para cargar es :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg, y avif. El tamaño máximo permitido para cargar es :size.', 'unaccepted_image_type' => 'Este archivo de imagen no fue legible. Los tipos de archivo aceptados son jpg, webp, png, gif y svg. El tipo mimetype de este archivo es: :mimetype.', 'import' => 'Importar', 'import_this_file' => 'Asociar campos y procesar este archivo', @@ -169,7 +169,7 @@ return [ 'asset_maintenance_report' => 'Informe mantenimiento de activos', 'asset_maintenances' => 'Mantenimiento de activos', 'item' => 'Elemento', - 'item_name' => 'Nombre del artículo', + 'item_name' => 'Nombre del elemento', 'import_file' => 'importar archivo CSV', 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', @@ -183,17 +183,17 @@ return [ 'licenses_available' => 'Licencias disponibles', 'licenses' => 'Licencias', 'list_all' => 'Mostrar todos', - 'loading' => 'Cargando... espere por favor....', + 'loading' => 'Cargando... espere por favor...', 'lock_passwords' => 'Este valor de campo no se guardará en una instalación de demostración.', 'feature_disabled' => 'Esta característica ha sido deshabilitada para la instalación de demostración.', 'location' => 'Ubicación', 'location_plural' => 'Ubicación|Ubicaciones', 'locations' => 'Ubicaciones', - 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del Logo es 50px de alta x 500px. ', + 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del logo es 50px de alto x 500px de ancho. ', 'logout' => 'Cerrar sesión', 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimiento', - 'manage_api_keys' => 'Administrar claves API', + 'manage_api_keys' => 'Administrar las claves del API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite Github sabor a markdown.', @@ -242,7 +242,7 @@ return [ 'requestable_models' => 'Modelos disponibles para solicitar', 'requestable_items' => 'Artículos que se pueden solicitar', 'requested' => 'Solicitado', - 'requested_date' => 'Fecha solicitada', + 'requested_date' => 'Fecha de solicitud', 'requested_assets' => 'Elementos solicitados', 'requested_assets_menu' => 'Elementos solicitados', 'request_canceled' => 'Solicitud cancelada', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', 'select_category' => 'Seleccionar una categoría', - 'select_datasource' => 'Seleccionar un origen de datos', + 'select_datasource' => 'Seleccione un origen de datos', 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de amortización', 'select_location' => 'Seleccionar una ubicación', @@ -268,22 +268,23 @@ return [ 'select_asset' => 'Seleccionar activo', 'settings' => 'Ajustes', 'show_deleted' => 'Mostrar eliminados', - 'show_current' => 'Mostrar Actual', + 'show_current' => 'Mostrar actual', 'sign_in' => 'Iniciar sesión', 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Hola! ¡Parece que la integración de :app con Snipe-IT funciona!', 'some_features_disabled' => 'DEMO MODE: Algunas características están desactivadas para esta instalación.', 'site_name' => 'Nombre del sitio', 'state' => 'Departamento', 'status_labels' => 'Etiquetas de estado', + 'status_label' => 'Status Label', 'status' => 'Estado', 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar?', + 'sure_to_delete' => '¿Está seguro de que desea eliminar', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', @@ -332,7 +333,7 @@ return [ 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', 'accept_decline' => 'Aceptar/Rechazar', - 'sign_tos' => 'Regístrate a continuación para indicar que estás de acuerdo con los términos del servicio:', + 'sign_tos' => 'Firme abajo para indicar que está de acuerdo con los términos de servicio:', 'clear_signature' => 'Borrar firma', 'show_help' => 'Mostrar ayuda', 'hide_help' => 'Ocultar ayuda', @@ -340,15 +341,15 @@ return [ 'hide_deleted' => 'Ocultar eliminados', 'email' => 'Correo electrónico', 'do_not_change' => 'No cambiar', - 'bug_report' => 'Reportar un error', + 'bug_report' => 'Reporte un error', 'user_manual' => 'Manual del usuario', 'setup_step_1' => 'Paso 1', 'setup_step_2' => 'Paso 2', 'setup_step_3' => 'Paso 3', 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', - 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear usuario Administrador', + 'setup_create_database' => 'Crear tablas de la base de datos', + 'setup_create_admin' => 'Crear usuario administrador', 'setup_done' => '¡Terminado!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado a', @@ -425,7 +426,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlo(s) o rechazarlo(s)', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -447,10 +448,10 @@ return [ 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', 'no_users_selected' => 'Ningún usuario seleccionado', 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', - 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merge_success' => '!:count usuarios fusionados con éxito en :into_username!', 'merged' => 'fusionado', - 'merged_log_this_user_into' => 'Fusionado este usuario (ID :to_id - :to_username) con ID de usuario :from_id (:from_username) ', - 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + 'merged_log_this_user_into' => 'Se fusionó este usuario (ID :to_id - :to_username) en ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Se fusionó usuario ID :from_id (:from_username) en este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y guardar', 'update_existing_values' => '¿Actualizar valores existentes?', 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', @@ -471,7 +472,7 @@ return [ 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', 'setup_migration_output' => 'Salida de Migración:', 'setup_migration_create_user' => 'Siguiente: Crear usuario', - 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero debería confirmarlo.', + 'importer_generic_error' => 'La importación del archivo se ha completado, pero recibimos un error. Esto suele deberse a la limitación de la API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí, pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', @@ -490,7 +491,7 @@ return [ 'checked_out_to_fullname' => 'Asignado a: Nombre completo', 'checked_out_to_first_name' => 'Asignado a: Nombre', 'checked_out_to_last_name' => 'Asignado a: Apellido', - 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_username' => 'Asignado a: Nombre de usuario', 'checked_out_to_email' => 'Asignado a: correo electrónico', 'checked_out_to_tag' => 'Asignado a: Placa de activo', 'manager_first_name' => 'Nombre del supervisor', @@ -551,12 +552,12 @@ return [ 'components' => ':count component|:count componentes', ], 'more_info' => 'Más información', - 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'quickscan_bulk_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'whoops' => '¡Uy!', 'something_went_wrong' => 'Algo falló en su solicitud.', 'close' => 'Cerrar', 'expires' => 'Vence', - 'map_fields'=> 'Asociar el campo :item_type', + 'map_fields'=> 'Asociar campos para :item_type', 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-CO/help.php b/resources/lang/es-CO/help.php index e766a4f35..7cbc6acc7 100644 --- a/resources/lang/es-CO/help.php +++ b/resources/lang/es-CO/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', + 'audit_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', diff --git a/resources/lang/es-CO/localizations.php b/resources/lang/es-CO/localizations.php index 88e7bbe1f..9c46fa7a4 100644 --- a/resources/lang/es-CO/localizations.php +++ b/resources/lang/es-CO/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayo', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Noruego', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Noruego Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persa', 'pl-PL'=> 'Polaco', 'pt-PT'=> 'Portugués', diff --git a/resources/lang/es-CO/mail.php b/resources/lang/es-CO/mail.php index 870e555ef..fb056480e 100644 --- a/resources/lang/es-CO/mail.php +++ b/resources/lang/es-CO/mail.php @@ -46,7 +46,7 @@ return [ 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', - 'click_to_confirm' => 'Por favor, haga clic en el siguiente enlace para confirmar su cuenta :web:', + 'click_to_confirm' => 'Por favor, haga clic en el siguiente enlace para confirmar su cuenta de :web:', 'current_QTY' => 'Cantidad actual', 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', @@ -58,7 +58,7 @@ return [ 'item' => 'Elemento:', 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', - 'link_to_update_password' => 'Haga clic en el siguiente enlace para actualizar su: contraseña de la web:', + 'link_to_update_password' => 'Por favor, haga clic en el siguiente enlace para actualizar contraseña de :web :', 'login' => 'Entrar:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', @@ -72,7 +72,7 @@ return [ 'read_the_terms_and_click' => 'Por favor lea los términos de uso a continuación y haga clic en el enlace en la parte inferior para confirmar que usted leyó los términos de uso y los acepta, y que ha recibido el activo.', 'requested' => 'Solicitado:', 'reset_link' => 'Su enlace de restablecimiento de contraseña', - 'reset_password' => 'Haga Clic aquí para restablecer su contraseña:', + 'reset_password' => 'Haaga clic aquí para restablecer tu contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Número de serie', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', @@ -82,7 +82,7 @@ return [ 'test_email' => 'Email de prueba de Snipe-IT', 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', - 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', + 'to_reset' => 'Para restaurar tu contraseña de :web, diligencie este formulario:', 'type' => 'Tipo', 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', diff --git a/resources/lang/es-CO/reminders.php b/resources/lang/es-CO/reminders.php index 2269768b6..98f281956 100644 --- a/resources/lang/es-CO/reminders.php +++ b/resources/lang/es-CO/reminders.php @@ -14,7 +14,7 @@ return array( */ "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", - "user" => "Usuario o E-Mail incorrectos", + "user" => "El nombre de usuario o la dirección de correo electrónico son incorrectos", "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', diff --git a/resources/lang/es-CO/validation.php b/resources/lang/es-CO/validation.php index 4b7afeb42..c998f61da 100644 --- a/resources/lang/es-CO/validation.php +++ b/resources/lang/es-CO/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', ], + 'percent' => 'El mínimo de amortización debe estar entre 0 y 100 cuando el tipo de amortización es porcentual.', + 'present' => 'El campo: atributo debe estar presente.', 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido.', + 'custom_field_not_found' => 'Este campo parece que no existe, por favor, compruebe los nombres de sus campos personalizados.', + 'custom_field_not_found_on_model' => 'Este campo parece existir, pero no está disponible en este conjunto de campos para el modelo de activo.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/es-ES/account/general.php b/resources/lang/es-ES/account/general.php index cb208da05..57338d964 100644 --- a/resources/lang/es-ES/account/general.php +++ b/resources/lang/es-ES/account/general.php @@ -10,6 +10,8 @@ return array( 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoins) del API y documentación adicional.', - 'profile_updated' => 'Cuenta actualizada exitosamente', + 'profile_updated' => 'La cuenta fue actualizada exitosamente', 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', + 'enable_sounds' => 'Habilitar efectos de sonido', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/es-ES/admin/accessories/message.php b/resources/lang/es-ES/admin/accessories/message.php index cfdae3f3e..c2d52963e 100644 --- a/resources/lang/es-ES/admin/accessories/message.php +++ b/resources/lang/es-ES/admin/accessories/message.php @@ -13,7 +13,7 @@ return array( 'update' => array( 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', - 'success' => 'Accesorio actualizado correctamente.' + 'success' => 'El accesorio fue actualizado con éxito.' ), 'delete' => array( diff --git a/resources/lang/es-ES/admin/custom_fields/general.php b/resources/lang/es-ES/admin/custom_fields/general.php index 512bab7cd..7f5932d93 100644 --- a/resources/lang/es-ES/admin/custom_fields/general.php +++ b/resources/lang/es-ES/admin/custom_fields/general.php @@ -41,7 +41,7 @@ return [ 'about_custom_fields_title' => 'Acerca de los Campos Personalizados', 'about_custom_fields_text' => 'Los campos personalizados le permiten añadir atributos arbitrarios a los activos.', 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', - 'make_optional' => 'Requerido - clic para hacerlo opcional', + 'make_optional' => 'Requerido - haga clic para hacerlo opcional', 'make_required' => 'Opcional - clic para hacerlo requerido', 'reorder' => 'Reordenar', 'db_field' => 'Campo en base de datos', diff --git a/resources/lang/es-ES/admin/departments/table.php b/resources/lang/es-ES/admin/departments/table.php index 89216f172..bca0490ee 100644 --- a/resources/lang/es-ES/admin/departments/table.php +++ b/resources/lang/es-ES/admin/departments/table.php @@ -7,5 +7,5 @@ return array( 'manager' => 'Supervisor', 'location' => 'Ubicación', 'create' => 'Crear departamento', - 'update' => 'Departamento de actualización', + 'update' => 'Actualizar departamento', ); diff --git a/resources/lang/es-ES/admin/hardware/general.php b/resources/lang/es-ES/admin/hardware/general.php index 6fb958d5f..4a48f4692 100644 --- a/resources/lang/es-ES/admin/hardware/general.php +++ b/resources/lang/es-ES/admin/hardware/general.php @@ -4,7 +4,7 @@ return [ 'about_assets_title' => 'Acerca de los activos', 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', - 'asset' => 'Equipo', + 'asset' => 'Activo', 'bulk_checkout' => 'Asignar activos', 'bulk_checkin' => 'Ingresar activos', 'checkin' => 'Ingresar activo', @@ -21,18 +21,18 @@ return [ 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', 'requestable_status_warning' => 'No cambiar el estado solicitable', - 'restore' => 'Restaurar equipo', + 'restore' => 'Restaurar activo', 'pending' => 'Pendiente', 'undeployable' => 'No utilizable', 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que es no utilizable y no puede ser asignado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Tiene un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los ítems al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', + 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los elementos al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', - 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando nombre de usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor vea abajo para más detalles.', diff --git a/resources/lang/es-ES/admin/hardware/message.php b/resources/lang/es-ES/admin/hardware/message.php index fe3a08764..9d73bd3fe 100644 --- a/resources/lang/es-ES/admin/hardware/message.php +++ b/resources/lang/es-ES/admin/hardware/message.php @@ -51,12 +51,12 @@ return [ ], 'import' => [ - 'import_button' => 'Proceso para importar', + 'import_button' => 'Importar', 'error' => 'Algunos elementos no se pudieron importar correctamente.', 'errorDetail' => 'Estos elementos no pudieron importarse debido a errores.', 'success' => 'Su archivo ha sido importado', 'file_delete_success' => 'Su archivo se ha eliminado correctamente', - 'file_delete_error' => 'No pudimos eliminar tu archivo', + 'file_delete_error' => 'El archivo no se pudo eliminar', 'file_missing' => 'Falta el archivo seleccionado', 'header_row_has_malformed_characters' => 'Uno o más atributos en la fila del encabezado contienen caracteres UTF-8 mal formados', 'content_row_has_malformed_characters' => 'Uno o más atributos en la primera fila de contenido contienen caracteres UTF-8 mal formados', diff --git a/resources/lang/es-ES/admin/kits/general.php b/resources/lang/es-ES/admin/kits/general.php index cb2f817c2..b9d6481df 100644 --- a/resources/lang/es-ES/admin/kits/general.php +++ b/resources/lang/es-ES/admin/kits/general.php @@ -23,17 +23,17 @@ return [ 'update_appended_model' => 'Actualizar modelo vinculado', 'license_error' => 'Licencia ya adjunta al kit', 'license_added_success' => 'Licencia añadida correctamente', - 'license_updated' => 'Licencia actualizada correctamente', + 'license_updated' => 'La licencia fue actualizada correctamente', 'license_none' => 'La licencia no existe', 'license_detached' => 'Licencia desvinculada correctamente', 'consumable_added_success' => 'Consumible añadido correctamente', - 'consumable_updated' => 'Consumible actualizado correctamente', + 'consumable_updated' => 'El consumible fue actualizado correctamente', 'consumable_error' => 'Consumible ya vinculado al kit', 'consumable_deleted' => 'Eliminado correctamente', 'consumable_none' => 'El Consumible no existe', 'consumable_detached' => 'Consumible desvinculado correctamente', 'accessory_added_success' => 'Accesorio añadido correctamente', - 'accessory_updated' => 'Accesorio actualizado correctamente', + 'accessory_updated' => 'El accesorio fue actualizado correctamente', 'accessory_detached' => 'Accesorio desvinculado correctamente', 'accessory_error' => 'El accesorio ya vinculado al kit', 'accessory_deleted' => 'Eliminado correctamente', @@ -42,9 +42,9 @@ return [ 'checkout_error' => 'Error al asignar', 'kit_none' => 'El Kit no existe', 'kit_created' => 'Kit creado correctamente', - 'kit_updated' => 'Kit actualizado correctamente', + 'kit_updated' => 'El kit fue actualizado correctamente', 'kit_not_found' => 'Kit no encontrado', 'kit_deleted' => 'Kit eliminado correctamente', - 'kit_model_updated' => 'Modelo actualizado correctamente', + 'kit_model_updated' => 'El modelo fue actualizado correctamente', 'kit_model_detached' => 'Modelo desvinculado correctamente', ]; diff --git a/resources/lang/es-ES/admin/labels/message.php b/resources/lang/es-ES/admin/labels/message.php index 6f03c9469..01006397c 100644 --- a/resources/lang/es-ES/admin/labels/message.php +++ b/resources/lang/es-ES/admin/labels/message.php @@ -2,9 +2,9 @@ return [ - 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, tiene :actual.', - 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtuvo :actual.', - 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtuvo :actual.', + 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtenido :actual.', 'does_not_exist' => 'La etiqueta no existe', diff --git a/resources/lang/es-ES/admin/licenses/message.php b/resources/lang/es-ES/admin/licenses/message.php index d9cf95f16..0001c73c3 100644 --- a/resources/lang/es-ES/admin/licenses/message.php +++ b/resources/lang/es-ES/admin/licenses/message.php @@ -4,7 +4,7 @@ return array( 'does_not_exist' => 'La licencia no existe o no tiene permiso para verla.', 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', - 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', + 'asset_does_not_exist' => 'El activo que intenta asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', diff --git a/resources/lang/es-ES/admin/licenses/table.php b/resources/lang/es-ES/admin/licenses/table.php index 571199dd0..df2b96484 100644 --- a/resources/lang/es-ES/admin/licenses/table.php +++ b/resources/lang/es-ES/admin/licenses/table.php @@ -11,7 +11,7 @@ return array( 'purchase_date' => 'Fecha de compra', 'purchased' => 'Comprado', 'seats' => 'Total de licencias', - 'hardware' => 'Equipo', + 'hardware' => 'Hardware', 'serial' => 'N. Serie', 'title' => 'Categoría de equipo', diff --git a/resources/lang/es-ES/admin/locations/message.php b/resources/lang/es-ES/admin/locations/message.php index 06956564e..05fd77702 100644 --- a/resources/lang/es-ES/admin/locations/message.php +++ b/resources/lang/es-ES/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'La ubicación no existe.', - 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assigned_assets' => 'Activos asignados', @@ -11,7 +11,7 @@ return array( 'create' => array( - 'error' => 'La ubicación no pudo ser creada, por favor inténtelo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor, inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-ES/admin/locations/table.php b/resources/lang/es-ES/admin/locations/table.php index 95f048d9e..782c953b7 100644 --- a/resources/lang/es-ES/admin/locations/table.php +++ b/resources/lang/es-ES/admin/locations/table.php @@ -2,7 +2,7 @@ return [ 'about_locations_title' => 'Acerca de las ubicaciones', - 'about_locations' => 'Las ubicaciones son utilizadas para hacer seguimiento de la información sobre ubicación de usuarios, activos, y otros ítems', + 'about_locations' => 'Las ubicaciones se utilizan para hacer un seguimiento de la ubicación de usuarios, activos y otros elementos', 'assets_rtd' => 'Activos', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Activos asignados', 'id' => 'ID', @@ -35,8 +35,8 @@ return [ 'asset_expected_checkin' => 'Fecha esperada de devolución', 'date' => 'Fecha:', 'phone' => 'Teléfono ubicación', - 'signed_by_asset_auditor' => 'Firmado por (Juego de Acciones):', - 'signed_by_finance_auditor' => 'Firmado por (Juego de Acciones):', - 'signed_by_location_manager' => 'Firmado por (Administrador de ubicación):', + 'signed_by_asset_auditor' => 'Firmado por (Auditor de Activos):', + 'signed_by_finance_auditor' => 'Firmado por (Auditor de Finanzas):', + 'signed_by_location_manager' => 'Firmado por (Supervisor de la ubicación):', 'signed_by' => 'Firmado por:', ]; diff --git a/resources/lang/es-ES/admin/settings/general.php b/resources/lang/es-ES/admin/settings/general.php index c4f8200b2..b7820fc14 100644 --- a/resources/lang/es-ES/admin/settings/general.php +++ b/resources/lang/es-ES/admin/settings/general.php @@ -6,7 +6,7 @@ return [ 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Añadir nombre de dominio al campo de nombre de usuario', - 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', + 'ad_append_domain_help' => 'El usuario no necesita escribir "usuario@dominio.local", puede escribir únicamente "usuario".', 'admin_cc_email' => 'Copiar en correo electrónico', 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administrador', @@ -41,7 +41,7 @@ return [ 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'CSS Personalizado', 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', - 'custom_forgot_pass_url' => 'Reestablecer URL de Contraseña Personalizada', + 'custom_forgot_pass_url' => 'URL de restablecimiento de contraseña personalizada', 'custom_forgot_pass_url_help' => 'Esto remplaza la URL incorporada para las contraseñas olvidadas en la pantalla de inicio, útil para dirigir a las personas a una funcionalidad de restablecimiento de contraseña LDAP interna o alojada. Esto efectivamente desactivará la funcionalidad local de olvido de contraseña.', 'dashboard_message' => 'Mensaje en el tablero', 'dashboard_message_help' => 'Este texto aparecerá en el panel para cualquiera que tenga permiso de ver el Panel.', @@ -110,13 +110,13 @@ return [ 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de Contraseña LDAP', 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', - 'ldap_username_field' => 'Campo de usuario', + 'ldap_username_field' => 'Campo nombre de usuario', 'ldap_lname_field' => 'Apellido', 'ldap_fname_field' => 'Nombre LDAP', 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles items, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', + 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles elementos, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', 'ldap_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', 'ldap_test' => 'Probar LDAP', @@ -127,7 +127,7 @@ return [ 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', - 'login_success' => '¿Éxito?', + 'login_success' => '¿Exitoso?', 'login_user_agent' => 'Navegador', 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de inicio de sesión', @@ -215,9 +215,11 @@ return [ 'webhook_endpoint' => 'Endpoint de :app', 'webhook_integration' => 'Ajustes de :app', 'webhook_test' =>'Probar integración con :app', - 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo, el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en su cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', + 'shortcuts_enabled' => 'Habilitar accesos directos', + 'shortcuts_help_text' => 'Windows: Alt + Tecla de acceso, Mac: Control + Opción + Tecla de acceso', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -231,7 +233,7 @@ return [ 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Acerca de Ajustes', - 'about_settings_text' => 'Estos ajustes te permiten personalizar ciertos aspectos de tu instalación.', + 'about_settings_text' => 'Estas configuraciones le permiten personalizar ciertos aspectos de su instalación.', 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', 'next_auto_tag_base' => 'Siguiente incremento automático', @@ -334,7 +336,7 @@ return [ 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear Usuario ::', 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', - 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', + 'create_admin_redirect' => '¡Haga clic aquí para acceder a su aplicación!', 'setup_migrations' => 'Migraciones de base de datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', diff --git a/resources/lang/es-ES/admin/settings/message.php b/resources/lang/es-ES/admin/settings/message.php index 8db2dbee6..926883aa8 100644 --- a/resources/lang/es-ES/admin/settings/message.php +++ b/resources/lang/es-ES/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Sí, restaurarlo. Reconozco que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], + 'restore' => [ + 'success' => 'Su copia de respaldo del sistema ha sido restaurada. Por favor, inicie sesión nuevamente.' + ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', 'validation_failed' => 'Su confirmación de purga es incorrecta. Por favor, escriba la palabra "Borrar" en el cuadro de confirmación.', diff --git a/resources/lang/es-ES/admin/suppliers/table.php b/resources/lang/es-ES/admin/suppliers/table.php index 02804f2fa..f862849cc 100644 --- a/resources/lang/es-ES/admin/suppliers/table.php +++ b/resources/lang/es-ES/admin/suppliers/table.php @@ -2,7 +2,7 @@ return array( 'about_suppliers_title' => 'Acerca de Proveedores', - 'about_suppliers_text' => 'Los Proveedores son utilizados para hacer seguimiento de la fuente de los items', + 'about_suppliers_text' => 'Los proveedores se utilizan para hacer seguimiento al origen de los elementos', 'address' => 'Dirección del Proveedor', 'assets' => 'Equipos', 'city' => 'Ciudad', diff --git a/resources/lang/es-ES/admin/users/message.php b/resources/lang/es-ES/admin/users/message.php index 11fb5d93c..80d6c215d 100644 --- a/resources/lang/es-ES/admin/users/message.php +++ b/resources/lang/es-ES/admin/users/message.php @@ -48,9 +48,9 @@ return array( 'accept_or_decline' => 'Debe aceptar o rechazar este equipo.', 'cannot_delete_yourself' => 'Nos sentiríamos muy mal si usted se eliminara, por favor reconsidérelo.', 'incorrect_user_accepted' => 'El elemento que ha intentado aceptar no fue asignado a usted.', - 'ldap_could_not_connect' => 'No se ha podido conectar con el servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', - 'ldap_could_not_bind' => 'No se ha podido vincular con el servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP: ', - 'ldap_could_not_search' => 'No se ha podido buscar en el servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', + 'ldap_could_not_connect' => 'No se pudo conectar al servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', + 'ldap_could_not_bind' => 'No se ha podido vincular al servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP: ', + 'ldap_could_not_search' => 'No se pudo buscar en el servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', 'ldap_could_not_get_entries' => 'No se han podido obtener entradas del servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', 'password_ldap' => 'La contraseña para esta cuenta es administrada por LDAP / Active Directory. Póngase en contacto con su departamento de TI para cambiar su contraseña.', ), diff --git a/resources/lang/es-ES/admin/users/table.php b/resources/lang/es-ES/admin/users/table.php index 3a6a7c866..b7299bb06 100644 --- a/resources/lang/es-ES/admin/users/table.php +++ b/resources/lang/es-ES/admin/users/table.php @@ -5,7 +5,7 @@ return array( 'allow' => 'Permitir', 'checkedout' => 'Equipos', 'created_at' => 'Creado', - 'createuser' => 'Crear Usuario', + 'createuser' => 'Crear usuario', 'deny' => 'Denegar', 'email' => 'Correo electrónico', 'employee_num' => 'No. Empleado', @@ -14,10 +14,10 @@ return array( 'id' => 'Id', 'inherit' => 'Hereda de', 'job' => 'Cargo', - 'last_login' => 'Ultimo Login', + 'last_login' => 'Último inicio de sesión', 'last_name' => 'Apellidos', 'location' => 'Ubicación', - 'lock_passwords' => 'Los detalles de acceso no pueden ser cambiados en esta instalación.', + 'lock_passwords' => 'Los detalles de inicio de sesión no pueden ser cambiados en esta instalación.', 'manager' => 'Supervisor', 'managed_locations' => 'Ubicaciones gestionadas', 'managed_users' => 'Usuarios gestionados', @@ -32,8 +32,8 @@ return array( 'title' => 'Cargo', 'to_restore_them' => 'para restaurarlos.', 'total_assets_cost' => "Coste total de activos", - 'updateuser' => 'Actualizar Usuario', - 'username' => 'Usuario', + 'updateuser' => 'Actualizar usuario', + 'username' => 'Nombre de usuario', 'user_deleted_text' => 'Este usuario ha sido marcado como eliminado.', 'username_note' => '(Esto se usa solo para la conexión con Active Directory, no para el inicio de sesión.)', 'cloneuser' => 'Clonar Usuario', diff --git a/resources/lang/es-ES/auth/message.php b/resources/lang/es-ES/auth/message.php index bbc9528ef..92e757ec5 100644 --- a/resources/lang/es-ES/auth/message.php +++ b/resources/lang/es-ES/auth/message.php @@ -3,7 +3,7 @@ return array( 'account_already_exists' => 'Ya existe un usuario con este e-mail.', - 'account_not_found' => 'El nombre de usuario o contraseña es incorrecta.', + 'account_not_found' => 'El nombre de usuario o la contraseña son incorrectos.', 'account_not_activated' => 'Este usuario no está activado.', 'account_suspended' => 'Este usuario está desactivado.', 'account_banned' => 'Este usuario ha sido expulsado.', @@ -19,7 +19,7 @@ return array( ), 'signin' => array( - 'error' => 'Ha habido un problema al iniciar sesión. Por favor, vuelve a intentarlo.', + 'error' => 'Ha habido un problema al iniciar sesión. Por favor, inténtelo de nuevo.', 'success' => 'Ha iniciado sesión exitosamente.', ), @@ -29,17 +29,17 @@ return array( ), 'signup' => array( - 'error' => 'Ha habido un problema al crear la cuenta. Por favor, vuelve a intentarlo.', + 'error' => 'Hubo un problema al crear la cuenta. Por favor, inténtelo de nuevo.', 'success' => 'Cuenta creada correctamente.', ), 'forgot-password' => array( - 'error' => 'Ha habido un problema al intentar resetear el password. Por favor, vuelve a intentarlo.', + 'error' => 'Ha habido un problema al obtener un código de restablecimiento de la contraseña. Por favor, inténtelo de nuevo.', 'success' => 'Si esa dirección de correo electrónico existe en nuestro sistema, recibirá un correo electrónico de recuperación de contraseña.', ), 'forgot-password-confirm' => array( - 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor, inténtelo de nuevo.', 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-ES/button.php b/resources/lang/es-ES/button.php index efd8b667c..aa13f5919 100644 --- a/resources/lang/es-ES/button.php +++ b/resources/lang/es-ES/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clonar :item_type', 'edit' => 'Editar :item_type', 'delete' => 'Eliminar :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restaurar :item_type', 'create' => 'Crear nuevo :item_type', 'checkout' => 'Asignar :item_type', 'checkin' => 'Ingresar :item_type', diff --git a/resources/lang/es-ES/general.php b/resources/lang/es-ES/general.php index 7154025f2..9b62f9080 100644 --- a/resources/lang/es-ES/general.php +++ b/resources/lang/es-ES/general.php @@ -1,7 +1,7 @@ 'Reestablecer 2FA', + '2FA_reset' => 'Restablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha de aceptación', @@ -17,26 +17,26 @@ return [ 'administrator' => 'Administrador', 'add_seats' => 'Licencias añadidas', 'age' => "Edad", - 'all_assets' => 'Todos los Equipos', + 'all_assets' => 'Todos los activos', 'all' => 'Todos los', 'archived' => 'Archivado', 'asset_models' => 'Modelos', 'asset_model' => 'Modelo', - 'asset' => 'Equipo', + 'asset' => 'Activo', 'asset_report' => 'Informe de activos', 'asset_tag' => 'Placa del activo', 'asset_tags' => 'Placas de activos', 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', - 'audit' => 'Auditoría', + 'audit' => 'Auditar', 'audit_report' => 'Registro de auditoría', 'assets' => 'Activos', 'assets_audited' => 'activos auditados', 'assets_checked_in_count' => 'activos ingresados', 'assets_checked_out_count' => 'activos asignados', 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', - 'assigned_date' => 'Fecha asignada', + 'assigned_date' => 'Fecha de asignación', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', 'avatar_delete' => 'Eliminar Avatar', @@ -44,7 +44,7 @@ return [ 'back' => 'Atras', 'bad_data' => 'Ningún resultado. ¿Quizá un dato incorrecto?', 'bulkaudit' => 'Auditoría masiva', - 'bulkaudit_status' => 'Estado de auditoría', + 'bulkaudit_status' => 'Estado de la auditoría', 'bulk_checkout' => 'Asignación masiva', 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Borrado masivo', @@ -66,7 +66,7 @@ return [ 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', - 'click_here' => 'Pulsa aquí', + 'click_here' => 'Haga clic aquí', 'clear_selection' => 'Borrar selección', 'companies' => 'Compañías', 'company' => 'Compañía', @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumibles', 'country' => 'País', 'could_not_restore' => 'Error al restaurar :item_type: :error', - 'not_deleted' => 'El :item_type no está borrado por lo que no puede ser restaurado', + 'not_deleted' => ':item_type no está eliminado; por lo tanto, no se puede restaurar', 'create' => 'Crear nuevo', 'created' => 'Artículo creado', 'created_asset' => 'equipo creado', @@ -87,7 +87,7 @@ return [ 'updated_at' => 'Actualizado en', 'currency' => '€', // this is deprecated 'current' => 'Actual', - 'current_password' => 'Contraseña Actual', + 'current_password' => 'Contraseña actual', 'customize_report' => 'Personalizar informe', 'custom_report' => 'Informe personalizado de activos', 'dashboard' => 'Tablero', @@ -95,10 +95,10 @@ return [ 'days_to_next_audit' => 'Días a la próxima auditoría', 'date' => 'Fecha', 'debug_warning' => '¡Advertencia!', - 'debug_warning_text' => 'Esta aplicación esta corriendo en modo producción con debugging activado. Esto puede exponer datos sensibles si su aplicación es accesible desde el exterior. Desactive el modo debug cambiando el valor APP_DEBUG en su archivo .env a false.', + 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con depuración habilitada. Esto puede exponer datos sensibles si su aplicación es accedida desde el mundo exterior. Deshabilite el modo de depuración configurando el valor APP_DEBUG en su archivo .env a false.', 'delete' => 'Borrar', 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', - 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', + 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no puede deshacerse.', 'deleted' => 'Borrado', 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', - 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', + 'lastnamefirstname' => 'Apellido.Nombre (smith.jane@example.com)', 'first_name' => 'Nombre', 'first_name_format' => 'Nombre (jane@ejemplo.com)', 'files' => 'Archivos', @@ -148,7 +148,7 @@ return [ 'github_markdown' => 'Este campo acepta el formateo flavored de GitHub.', 'groups' => 'Grupos', 'gravatar_email' => 'Gravatar Email', - 'gravatar_url' => 'Cambia tu avatar en Gravatar.com.', + 'gravatar_url' => 'Cambie su avatar en Gravatar.com.', 'history' => 'Historial', 'history_for' => 'Historial de', 'id' => 'Id', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Borrar imagen', 'include_deleted' => 'Incluir activos eliminados', 'image_upload' => 'Cargar imagen', - 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', - 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', - 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', + 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido para cargar es :size.', + 'filetypes_size_help' => 'El tamaño máximo permitido para cargar es :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg, y avif. El tamaño máximo permitido para cargar es :size.', 'unaccepted_image_type' => 'No se pudo leer este archivo de imagen. Los tipos de archivo aceptados son jpg, webp, png, gif y svg. El tipo mimetype de este archivo es: :mimetype.', 'import' => 'Importar', 'import_this_file' => 'Asociar campos y procesar este archivo', @@ -169,7 +169,7 @@ return [ 'asset_maintenance_report' => 'Informe mantenimiento de activos', 'asset_maintenances' => 'Mantenimiento de activos', 'item' => 'Elemento', - 'item_name' => 'Nombre del ítem', + 'item_name' => 'Nombre del elemento', 'import_file' => 'importar archivo CSV', 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', @@ -183,17 +183,17 @@ return [ 'licenses_available' => 'Licencias disponibles', 'licenses' => 'Licencias', 'list_all' => 'Mostrar todos', - 'loading' => 'Cargando... por favor espere....', + 'loading' => 'Cargando... por favor espere...', 'lock_passwords' => 'El valor de este campo no será guardado en una instalación de demostración.', 'feature_disabled' => 'Esta característica se ha desactivado para la versión de demostración.', 'location' => 'Ubicación', 'location_plural' => 'Ubicación|Ubicaciones', 'locations' => 'Ubicaciones', - 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del logo es 50px de altura x 500px de ancho. ', + 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del logo es 50px de alto x 500px de ancho. ', 'logout' => 'Desconexión', 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimientos', - 'manage_api_keys' => 'Administrar API Keys', + 'manage_api_keys' => 'Administrar las claves del API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite Github con sabor a markdown.', @@ -245,7 +245,7 @@ return [ 'requested_date' => 'Fecha de solicitud', 'requested_assets' => 'Elementos solicitados', 'requested_assets_menu' => 'Elementos solicitados', - 'request_canceled' => 'Solicitud Cancelada', + 'request_canceled' => 'Solicitud cancelada', 'request_item' => 'Solicitar este elemento', 'external_link_tooltip' => 'Enlace externo a', 'save' => 'Guardar', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', 'select_category' => 'Seleccionar una categoría', - 'select_datasource' => 'Seleccionar un origen de datos', + 'select_datasource' => 'Seleccione un origen de datos', 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de amortización', 'select_location' => 'Seleccionar una ubicación', @@ -274,16 +274,17 @@ return [ 'signed_off_by' => 'Firmado por', 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Hola! ¡Parece que la integración de :app con Snipe-IT funciona!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', 'status_labels' => 'Etiquetas de estado', + 'status_label' => 'Status Label', 'status' => 'Estado', 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar?', + 'sure_to_delete' => '¿Está seguro de que desea eliminar', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', @@ -303,7 +304,7 @@ return [ 'uploaded' => 'Cargado', 'user' => 'Usuario', 'accepted' => 'aceptado', - 'declined' => 'declinado', + 'declined' => 'rechazado', 'declined_note' => 'Notas de rechazo', 'unassigned' => 'Sin asignar', 'unaccepted_asset_report' => 'Activos no aceptados', @@ -332,7 +333,7 @@ return [ 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', 'accept_decline' => 'Aceptar/Rechazar', - 'sign_tos' => 'Firma abajo para indicar que estás de acuerdo con los términos de servicio:', + 'sign_tos' => 'Firme abajo para indicar que está de acuerdo con los términos de servicio:', 'clear_signature' => 'Borrar firma', 'show_help' => 'Mostrar ayuda', 'hide_help' => 'Ocultar ayuda', @@ -340,15 +341,15 @@ return [ 'hide_deleted' => 'Ocultar eliminados', 'email' => 'Correo electrónico', 'do_not_change' => 'No cambiar', - 'bug_report' => 'Reportar un fallo', + 'bug_report' => 'Reporte un error', 'user_manual' => 'Manual del usuario', 'setup_step_1' => 'Paso 1', 'setup_step_2' => 'Paso 2', 'setup_step_3' => 'Paso 3', 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', - 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear usuario Administrador', + 'setup_create_database' => 'Crear tablas de la base de datos', + 'setup_create_admin' => 'Crear usuario administrador', 'setup_done' => '¡Terminado!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado', @@ -425,7 +426,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlo(s) o rechazarlo(s)', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -447,10 +448,10 @@ return [ 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', 'no_users_selected' => 'Ningún usuario seleccionado', 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', - 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merge_success' => '!:count usuarios fusionados con éxito en :into_username!', 'merged' => 'fusionados', - 'merged_log_this_user_into' => 'Fusionado este usuario (ID :to_id - :to_username) con el ID de usuario :from_id (:from_username) ', - 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + 'merged_log_this_user_into' => 'Se fusionó este usuario (ID :to_id - :to_username) en ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Se fusionó usuario ID :from_id (:from_username) en este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y Guardar', 'update_existing_values' => '¿Actualizar valores existentes?', 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', @@ -471,7 +472,7 @@ return [ 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', 'setup_migration_output' => 'Salida de Migración:', 'setup_migration_create_user' => 'Siguiente: Crear usuario', - 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero debería confirmarlo.', + 'importer_generic_error' => 'La importación del archivo se ha completado, pero recibimos un error. Esto suele deberse a la limitación de la API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí, pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', @@ -490,7 +491,7 @@ return [ 'checked_out_to_fullname' => 'Asignado a: Nombre completo', 'checked_out_to_first_name' => 'Asignado a: Nombre', 'checked_out_to_last_name' => 'Asignado a: Apellido', - 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_username' => 'Asignado a: Nombre de usuario', 'checked_out_to_email' => 'Asignado a: correo electrónico', 'checked_out_to_tag' => 'Asignado a: Placa de activo', 'manager_first_name' => 'Nombre del supervisor', @@ -551,12 +552,12 @@ return [ 'components' => ':count component|:count componentes', ], 'more_info' => 'Más información', - 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'quickscan_bulk_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'whoops' => '¡Uy!', 'something_went_wrong' => 'Algo falló en su solicitud.', 'close' => 'Cerrar', 'expires' => 'Vence', - 'map_fields'=> 'Asociar el campo :item_type', + 'map_fields'=> 'Asociar campos para :item_type', 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-ES/help.php b/resources/lang/es-ES/help.php index e766a4f35..7cbc6acc7 100644 --- a/resources/lang/es-ES/help.php +++ b/resources/lang/es-ES/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', + 'audit_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', diff --git a/resources/lang/es-ES/localizations.php b/resources/lang/es-ES/localizations.php index 91d7c339f..03c489ced 100644 --- a/resources/lang/es-ES/localizations.php +++ b/resources/lang/es-ES/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayo', 'mi-NZ'=> 'Maorí', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Noruego', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Noruego Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persa', 'pl-PL'=> 'Polaco', 'pt-PT'=> 'Portugués', diff --git a/resources/lang/es-ES/mail.php b/resources/lang/es-ES/mail.php index 438b75052..e8e236549 100644 --- a/resources/lang/es-ES/mail.php +++ b/resources/lang/es-ES/mail.php @@ -46,7 +46,7 @@ return [ 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', - 'click_to_confirm' => 'Por favor, pulsa en el siguiente enlace para verificar tu cuenta de :web:', + 'click_to_confirm' => 'Por favor, haga clic en el siguiente enlace para confirmar su cuenta de :web:', 'current_QTY' => 'Cantidad actual', 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', @@ -58,7 +58,7 @@ return [ 'item' => 'Elemento:', 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', - 'link_to_update_password' => 'Haga clic en el siguiente enlace para actualizar su: contraseña de la web:', + 'link_to_update_password' => 'Por favor, haga clic en el siguiente enlace para actualizar contraseña de :web :', 'login' => 'Entrar:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', @@ -72,7 +72,7 @@ return [ 'read_the_terms_and_click' => 'Por favor lea los términos de uso a continuación y haga clic en el enlace en la parte inferior para confirmar que usted leyó los términos de uso y los acepta, y que ha recibido el activo.', 'requested' => 'Solicitado:', 'reset_link' => 'Su enlace de restablecimiento de contraseña', - 'reset_password' => 'Haga Clic aquí para restablecer su contraseña:', + 'reset_password' => 'Haaga clic aquí para restablecer tu contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Número de serie', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', @@ -82,7 +82,7 @@ return [ 'test_email' => 'Email de prueba de Snipe-IT', 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', - 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', + 'to_reset' => 'Para restaurar tu contraseña de :web, diligencie este formulario:', 'type' => 'Tipo', 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', diff --git a/resources/lang/es-ES/reminders.php b/resources/lang/es-ES/reminders.php index 2269768b6..98f281956 100644 --- a/resources/lang/es-ES/reminders.php +++ b/resources/lang/es-ES/reminders.php @@ -14,7 +14,7 @@ return array( */ "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", - "user" => "Usuario o E-Mail incorrectos", + "user" => "El nombre de usuario o la dirección de correo electrónico son incorrectos", "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', diff --git a/resources/lang/es-ES/validation.php b/resources/lang/es-ES/validation.php index 93ef1d546..eacfdb039 100644 --- a/resources/lang/es-ES/validation.php +++ b/resources/lang/es-ES/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', ], + 'percent' => 'El mínimo de amortización debe estar entre 0 y 100 cuando el tipo de amortización es porcentual.', + 'present' => 'El campo: atributo debe estar presente.', 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', @@ -158,7 +160,7 @@ return [ 'unique_undeleted' => 'El :atrribute debe ser único.', 'non_circular' => ':attribute no debe crear una referencia circular.', 'not_array' => ':attribute no puede ser una matriz.', - 'disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el usuario.', + 'disallow_same_pwd_as_user_fields' => 'La contraseña no puede ser la misma que el nombre de usuario.', 'letters' => 'La contraseña debe contener al menos una letra.', 'numbers' => 'La contraseña debe contener al menos un número.', 'case_diff' => 'La contraseña debe usar mayúsculas y minúsculas.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido.', + 'custom_field_not_found' => 'Este campo parece que no existe, por favor, compruebe los nombres de sus campos personalizados.', + 'custom_field_not_found_on_model' => 'Este campo parece existir, pero no está disponible en este conjunto de campos para el modelo de activo.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/es-MX/account/general.php b/resources/lang/es-MX/account/general.php index 2520857ca..4280c37db 100644 --- a/resources/lang/es-MX/account/general.php +++ b/resources/lang/es-MX/account/general.php @@ -10,6 +10,8 @@ return array( 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoints) del API y documentación adicional.', - 'profile_updated' => 'Cuenta actualizada exitosamente', + 'profile_updated' => 'La cuenta fue actualizada exitosamente', 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', + 'enable_sounds' => 'Habilitar efectos de sonido', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/es-MX/admin/accessories/message.php b/resources/lang/es-MX/admin/accessories/message.php index cfdae3f3e..c2d52963e 100644 --- a/resources/lang/es-MX/admin/accessories/message.php +++ b/resources/lang/es-MX/admin/accessories/message.php @@ -13,7 +13,7 @@ return array( 'update' => array( 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', - 'success' => 'Accesorio actualizado correctamente.' + 'success' => 'El accesorio fue actualizado con éxito.' ), 'delete' => array( diff --git a/resources/lang/es-MX/admin/custom_fields/general.php b/resources/lang/es-MX/admin/custom_fields/general.php index 93239def8..b8c1f1533 100644 --- a/resources/lang/es-MX/admin/custom_fields/general.php +++ b/resources/lang/es-MX/admin/custom_fields/general.php @@ -41,8 +41,8 @@ return [ 'about_custom_fields_title' => 'Acerca de los Campos Personalizados', 'about_custom_fields_text' => 'Los campos personalizados te permiten agregar atributos arbritarios a los activos.', 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', - 'make_optional' => 'Requerido - haz clic para hacerlo opcional', - 'make_required' => 'Opcional - haz clic para hacerlo requerido', + 'make_optional' => 'Requerido - haga clic para hacerlo opcional', + 'make_required' => 'Requerido - haga clic para hacerlo opcional', 'reorder' => 'Reordenar', 'db_field' => 'Campo en base de datos', 'db_convert_warning' => 'ADVERTENCIA. Este campo está en la tabla de campos personalizados como :db_column pero debe ser :expected.', diff --git a/resources/lang/es-MX/admin/departments/table.php b/resources/lang/es-MX/admin/departments/table.php index 89216f172..bca0490ee 100644 --- a/resources/lang/es-MX/admin/departments/table.php +++ b/resources/lang/es-MX/admin/departments/table.php @@ -7,5 +7,5 @@ return array( 'manager' => 'Supervisor', 'location' => 'Ubicación', 'create' => 'Crear departamento', - 'update' => 'Departamento de actualización', + 'update' => 'Actualizar departamento', ); diff --git a/resources/lang/es-MX/admin/hardware/general.php b/resources/lang/es-MX/admin/hardware/general.php index 14ebf5713..de8689309 100644 --- a/resources/lang/es-MX/admin/hardware/general.php +++ b/resources/lang/es-MX/admin/hardware/general.php @@ -4,7 +4,7 @@ return [ 'about_assets_title' => 'Acerca de los activos', 'about_assets_text' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', 'archived' => 'Archivado', - 'asset' => 'Equipo', + 'asset' => 'Activo', 'bulk_checkout' => 'Asignar activos', 'bulk_checkin' => 'Ingresar activos', 'checkin' => 'Ingresar activo', @@ -21,18 +21,18 @@ return [ 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', 'requestable_status_warning' => 'No cambiar el estado solicitable', - 'restore' => 'Restaurar equipo', + 'restore' => 'Restaurar activo', 'pending' => 'Pendiente', 'undeployable' => 'No utilizable', 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que es no utilizable y no puede ser asignado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Hay un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los ítems al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', + 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los elementos al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', - 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando nombre de usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor, vea abajo para más detalles.', diff --git a/resources/lang/es-MX/admin/hardware/message.php b/resources/lang/es-MX/admin/hardware/message.php index 6d75025b9..530fe870e 100644 --- a/resources/lang/es-MX/admin/hardware/message.php +++ b/resources/lang/es-MX/admin/hardware/message.php @@ -51,12 +51,12 @@ return [ ], 'import' => [ - 'import_button' => 'Proceso para importar', + 'import_button' => 'Importar', 'error' => 'Algunos elementos no se pudieron importar correctamente.', 'errorDetail' => 'Estos elementos no pudieron importarse debido a errores.', 'success' => 'Su archivo ha sido importado', 'file_delete_success' => 'Su archivo se ha eliminado correctamente', - 'file_delete_error' => 'No pudimos eliminar tu archivo', + 'file_delete_error' => 'El archivo no se pudo eliminar', 'file_missing' => 'Falta el archivo seleccionado', 'header_row_has_malformed_characters' => 'Uno o más atributos de la fila de encabezado contiene caracteres UTF-8 mal formados', 'content_row_has_malformed_characters' => 'Uno o más atributos de la fila de encabezado contiene caracteres UTF-8 mal formados', diff --git a/resources/lang/es-MX/admin/kits/general.php b/resources/lang/es-MX/admin/kits/general.php index 229130f42..bd54b656e 100644 --- a/resources/lang/es-MX/admin/kits/general.php +++ b/resources/lang/es-MX/admin/kits/general.php @@ -23,17 +23,17 @@ return [ 'update_appended_model' => 'Actualizar modelo añadido', 'license_error' => 'Licencia ya está vinculada al kit', 'license_added_success' => 'Licencia añadida correctamente', - 'license_updated' => 'La licencia se ha actualizado correctamente', + 'license_updated' => 'La licencia fue actualizada correctamente', 'license_none' => 'La licencia no existe', 'license_detached' => 'Licencia desvinculada correctamente', 'consumable_added_success' => 'Consumible añadido correctamente', - 'consumable_updated' => 'Consumible actualizado correctamente', + 'consumable_updated' => 'El consumible fue actualizado correctamente', 'consumable_error' => 'Consumible ya vinculado al kit', 'consumable_deleted' => 'El borrado fue exitoso', 'consumable_none' => 'El Consumible no existe', 'consumable_detached' => 'Consumible desvinculado correctamente', 'accessory_added_success' => 'Accesorio añadido correctamente', - 'accessory_updated' => 'Accesorio actualizado correctamente', + 'accessory_updated' => 'El accesorio fue actualizado correctamente', 'accessory_detached' => 'Accesorio desvinculado correctamente', 'accessory_error' => 'El accesorio ya está vinculado al kit', 'accessory_deleted' => 'El borrado fue exitoso', @@ -42,9 +42,9 @@ return [ 'checkout_error' => 'Error al asignar', 'kit_none' => 'El Kit no existe', 'kit_created' => 'Kit creado correctamente', - 'kit_updated' => 'El kit se ha actualizado correctamente', + 'kit_updated' => 'El kit fue actualizado correctamente', 'kit_not_found' => 'Kit no encontrado', 'kit_deleted' => 'El kit ha sido eliminado correctamente', - 'kit_model_updated' => 'Modelo actualizado correctamente', + 'kit_model_updated' => 'El modelo fue actualizado correctamente', 'kit_model_detached' => 'Modelo desvinculado correctamente', ]; diff --git a/resources/lang/es-MX/admin/labels/message.php b/resources/lang/es-MX/admin/labels/message.php index ef530d72c..01006397c 100644 --- a/resources/lang/es-MX/admin/labels/message.php +++ b/resources/lang/es-MX/admin/labels/message.php @@ -2,9 +2,9 @@ return [ - 'invalid_return_count' => 'No se obtuvo un recuento válido desde :name. Esperado :expected, se obtuvo :actual.', - 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtuvo :actual.', - 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtuvo :actual.', + 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtenido :actual.', 'does_not_exist' => 'La etiqueta no existe', diff --git a/resources/lang/es-MX/admin/licenses/message.php b/resources/lang/es-MX/admin/licenses/message.php index 3758c5bba..d7f5c33d5 100644 --- a/resources/lang/es-MX/admin/licenses/message.php +++ b/resources/lang/es-MX/admin/licenses/message.php @@ -4,7 +4,7 @@ return array( 'does_not_exist' => 'La licencia no existe o usted no tiene permiso para verla.', 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', - 'asset_does_not_exist' => 'El equipo que intentas asignar a esta licencia no existe.', + 'asset_does_not_exist' => 'El activo que intenta asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', diff --git a/resources/lang/es-MX/admin/licenses/table.php b/resources/lang/es-MX/admin/licenses/table.php index 5e1a8cc1c..b2e4a8b49 100644 --- a/resources/lang/es-MX/admin/licenses/table.php +++ b/resources/lang/es-MX/admin/licenses/table.php @@ -11,7 +11,7 @@ return array( 'purchase_date' => 'Fecha de compra', 'purchased' => 'Comprada', 'seats' => 'Total de licencias', - 'hardware' => 'Equipo', + 'hardware' => 'Hardware', 'serial' => 'N. Serie', 'title' => 'Categoría de equipo', diff --git a/resources/lang/es-MX/admin/locations/message.php b/resources/lang/es-MX/admin/locations/message.php index 06956564e..05fd77702 100644 --- a/resources/lang/es-MX/admin/locations/message.php +++ b/resources/lang/es-MX/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'La ubicación no existe.', - 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assigned_assets' => 'Activos asignados', @@ -11,7 +11,7 @@ return array( 'create' => array( - 'error' => 'La ubicación no pudo ser creada, por favor inténtelo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor, inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-MX/admin/locations/table.php b/resources/lang/es-MX/admin/locations/table.php index 87bd03373..743dab7aa 100644 --- a/resources/lang/es-MX/admin/locations/table.php +++ b/resources/lang/es-MX/admin/locations/table.php @@ -2,7 +2,7 @@ return [ 'about_locations_title' => 'Acerca de las ubicaciones', - 'about_locations' => 'Las ubicaciones son utilizadas para hacer seguimiento de la información sobre ubicación de usuarios, activos, y otros ítems', + 'about_locations' => 'Las ubicaciones se utilizan para hacer un seguimiento de la ubicación de usuarios, activos y otros elementos', 'assets_rtd' => 'Activos', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Activos asignados', 'id' => 'ID', @@ -37,6 +37,6 @@ return [ 'phone' => 'Teléfono ubicación', 'signed_by_asset_auditor' => 'Firmado por (Auditor de Activos):', 'signed_by_finance_auditor' => 'Firmado por (Auditor de Finanzas):', - 'signed_by_location_manager' => 'Firmado por (Administrador de área):', + 'signed_by_location_manager' => 'Firmado por (Supervisor de la ubicación):', 'signed_by' => 'Firmado por:', ]; diff --git a/resources/lang/es-MX/admin/settings/general.php b/resources/lang/es-MX/admin/settings/general.php index 734e4002a..367603430 100644 --- a/resources/lang/es-MX/admin/settings/general.php +++ b/resources/lang/es-MX/admin/settings/general.php @@ -6,7 +6,7 @@ return [ 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Asignar nombre de dominio al campo del nombre de usuario', - 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', + 'ad_append_domain_help' => 'El usuario no necesita escribir "usuario@dominio.local", puede escribir únicamente "usuario".', 'admin_cc_email' => 'Copiar en correo electrónico', 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administración', @@ -41,7 +41,7 @@ return [ 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'CSS Personalizado', 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', - 'custom_forgot_pass_url' => 'Reestablecer URL de Contraseña Personalizada', + 'custom_forgot_pass_url' => 'URL de restablecimiento de contraseña personalizada', 'custom_forgot_pass_url_help' => 'Esto remplaza la URL incorporada para las contraseñas olvidadas en la pantalla de inicio, útil para dirigir a las personas a una funcionalidad de restablecimiento de contraseña LDAP interna o alojada. Esto efectivamente desactivará la funcionalidad local de olvido de contraseña.', 'dashboard_message' => 'Mensaje en el tablero', 'dashboard_message_help' => 'Este texto aparecerá en el panel para cualquiera que tenga permiso de ver el Panel.', @@ -110,13 +110,13 @@ return [ 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de Contraseña LDAP', 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', - 'ldap_username_field' => 'Campo de usuario', + 'ldap_username_field' => 'Campo nombre de usuario', 'ldap_lname_field' => 'Apellido', 'ldap_fname_field' => 'Nombre LDAP', 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles items, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', + 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles elementos, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', 'ldap_emp_num' => 'Número de empleado LDAP', 'ldap_email' => 'Email LDAP', 'ldap_test' => 'Probar LDAP', @@ -127,7 +127,7 @@ return [ 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', - 'login_success' => '¿Éxito?', + 'login_success' => '¿Exitoso?', 'login_user_agent' => 'Agente de usuario', 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de inicio de sesión', @@ -215,9 +215,11 @@ return [ 'webhook_endpoint' => 'Endopint de :app', 'webhook_integration' => 'Configuración de :app', 'webhook_test' =>'Probar integración con :app', - 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo, el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en su cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', + 'shortcuts_enabled' => 'Habilitar accesos directos', + 'shortcuts_help_text' => 'Windows: Alt + Tecla de acceso, Mac: Control + Opción + Tecla de acceso', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifica quien ve los enlaces de información de Soporte y Manual de Usuarios de Snipe-IT', @@ -231,7 +233,7 @@ return [ 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Acerca de Ajustes', - 'about_settings_text' => 'Estos ajustes te permiten personalizar ciertos aspectos de tu instalación.', + 'about_settings_text' => 'Estas configuraciones le permiten personalizar ciertos aspectos de su instalación.', 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', 'next_auto_tag_base' => 'Siguiente incremento automático', @@ -334,7 +336,7 @@ return [ 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', - 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', + 'create_admin_redirect' => '¡Haga clic aquí para acceder a su aplicación!', 'setup_migrations' => 'Migraciones de base de datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', diff --git a/resources/lang/es-MX/admin/settings/message.php b/resources/lang/es-MX/admin/settings/message.php index 3d457c45a..fb1551e49 100644 --- a/resources/lang/es-MX/admin/settings/message.php +++ b/resources/lang/es-MX/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Sí, restaurarlo. Entiendo que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], + 'restore' => [ + 'success' => 'Su copia de respaldo del sistema ha sido restaurada. Por favor, inicie sesión nuevamente.' + ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', 'validation_failed' => 'Su confirmación de purga es incorrecta. Por favor, escriba la palabra "Borrar" en el cuadro de confirmación.', diff --git a/resources/lang/es-MX/admin/suppliers/table.php b/resources/lang/es-MX/admin/suppliers/table.php index 02804f2fa..f862849cc 100644 --- a/resources/lang/es-MX/admin/suppliers/table.php +++ b/resources/lang/es-MX/admin/suppliers/table.php @@ -2,7 +2,7 @@ return array( 'about_suppliers_title' => 'Acerca de Proveedores', - 'about_suppliers_text' => 'Los Proveedores son utilizados para hacer seguimiento de la fuente de los items', + 'about_suppliers_text' => 'Los proveedores se utilizan para hacer seguimiento al origen de los elementos', 'address' => 'Dirección del Proveedor', 'assets' => 'Equipos', 'city' => 'Ciudad', diff --git a/resources/lang/es-MX/admin/users/message.php b/resources/lang/es-MX/admin/users/message.php index 25d511c5d..851958d7a 100644 --- a/resources/lang/es-MX/admin/users/message.php +++ b/resources/lang/es-MX/admin/users/message.php @@ -48,9 +48,9 @@ return array( 'accept_or_decline' => 'Debe aceptar o rechazar este equipo.', 'cannot_delete_yourself' => 'Nos sentiríamos muy mal si usted se eliminara, por favor reconsidérelo.', 'incorrect_user_accepted' => 'El elemento que ha intentado aceptar no fue asignado a usted.', - 'ldap_could_not_connect' => 'No se ha podido conectar con el servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', - 'ldap_could_not_bind' => 'No se ha podido vincular con el servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP: ', - 'ldap_could_not_search' => 'No se ha podido buscar en el servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', + 'ldap_could_not_connect' => 'No se pudo conectar al servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', + 'ldap_could_not_bind' => 'No se ha podido vincular al servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP: ', + 'ldap_could_not_search' => 'No se pudo buscar en el servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', 'ldap_could_not_get_entries' => 'No se han podido obtener entradas del servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', 'password_ldap' => 'La contraseña para esta cuenta es administrada por LDAP / Active Directory. Póngase en contacto con su departamento de TI para cambiar su contraseña.', ), diff --git a/resources/lang/es-MX/admin/users/table.php b/resources/lang/es-MX/admin/users/table.php index 3a6a7c866..b7299bb06 100644 --- a/resources/lang/es-MX/admin/users/table.php +++ b/resources/lang/es-MX/admin/users/table.php @@ -5,7 +5,7 @@ return array( 'allow' => 'Permitir', 'checkedout' => 'Equipos', 'created_at' => 'Creado', - 'createuser' => 'Crear Usuario', + 'createuser' => 'Crear usuario', 'deny' => 'Denegar', 'email' => 'Correo electrónico', 'employee_num' => 'No. Empleado', @@ -14,10 +14,10 @@ return array( 'id' => 'Id', 'inherit' => 'Hereda de', 'job' => 'Cargo', - 'last_login' => 'Ultimo Login', + 'last_login' => 'Último inicio de sesión', 'last_name' => 'Apellidos', 'location' => 'Ubicación', - 'lock_passwords' => 'Los detalles de acceso no pueden ser cambiados en esta instalación.', + 'lock_passwords' => 'Los detalles de inicio de sesión no pueden ser cambiados en esta instalación.', 'manager' => 'Supervisor', 'managed_locations' => 'Ubicaciones gestionadas', 'managed_users' => 'Usuarios gestionados', @@ -32,8 +32,8 @@ return array( 'title' => 'Cargo', 'to_restore_them' => 'para restaurarlos.', 'total_assets_cost' => "Coste total de activos", - 'updateuser' => 'Actualizar Usuario', - 'username' => 'Usuario', + 'updateuser' => 'Actualizar usuario', + 'username' => 'Nombre de usuario', 'user_deleted_text' => 'Este usuario ha sido marcado como eliminado.', 'username_note' => '(Esto se usa solo para la conexión con Active Directory, no para el inicio de sesión.)', 'cloneuser' => 'Clonar Usuario', diff --git a/resources/lang/es-MX/auth/message.php b/resources/lang/es-MX/auth/message.php index 02c181311..7f11d09eb 100644 --- a/resources/lang/es-MX/auth/message.php +++ b/resources/lang/es-MX/auth/message.php @@ -3,7 +3,7 @@ return array( 'account_already_exists' => 'Ya existe un usuario con este e-mail.', - 'account_not_found' => 'El nombre de usuario o contraseña es incorrecta.', + 'account_not_found' => 'El nombre de usuario o la contraseña son incorrectos.', 'account_not_activated' => 'Este usuario no está activado.', 'account_suspended' => 'Este usuario está desactivado.', 'account_banned' => 'Este usuario ha sido expulsado.', @@ -19,7 +19,7 @@ return array( ), 'signin' => array( - 'error' => 'Ha habido un problema al iniciar sesión. Por favor, vuelve a intentarlo.', + 'error' => 'Ha habido un problema al iniciar sesión. Por favor, inténtelo de nuevo.', 'success' => 'Ha iniciado sesión exitosamente.', ), @@ -29,17 +29,17 @@ return array( ), 'signup' => array( - 'error' => 'Ha habido un problema al crear la cuenta. Por favor, vuelve a intentarlo.', + 'error' => 'Hubo un problema al crear la cuenta. Por favor, inténtelo de nuevo.', 'success' => 'Cuenta creada correctamente.', ), 'forgot-password' => array( - 'error' => 'Ha habido un problema al intentar resetear el password. Por favor, vuelve a intentarlo.', + 'error' => 'Ha habido un problema al obtener un código de restablecimiento de la contraseña. Por favor, inténtelo de nuevo.', 'success' => 'Si esa dirección de correo electrónico existe en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ), 'forgot-password-confirm' => array( - 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor, inténtelo de nuevo.', 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-MX/button.php b/resources/lang/es-MX/button.php index 7dea4ebf3..a6ae7fdb2 100644 --- a/resources/lang/es-MX/button.php +++ b/resources/lang/es-MX/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clonar :item_type', 'edit' => 'Editar :item_type', 'delete' => 'Eliminar :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restaurar :item_type', 'create' => 'Crear nuevo :item_type', 'checkout' => 'Asignar :item_type', 'checkin' => 'Ingresar :item_type', diff --git a/resources/lang/es-MX/general.php b/resources/lang/es-MX/general.php index 67ef95f15..3c73dd8b7 100644 --- a/resources/lang/es-MX/general.php +++ b/resources/lang/es-MX/general.php @@ -1,7 +1,7 @@ 'Reestablecer 2FA', + '2FA_reset' => 'Restablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha de aceptación', @@ -17,26 +17,26 @@ return [ 'administrator' => 'Administrator', 'add_seats' => 'Licencias añadidas', 'age' => "Edad", - 'all_assets' => 'Todos los Equipos', + 'all_assets' => 'Todos los activos', 'all' => 'Todos los', 'archived' => 'Archivado', 'asset_models' => 'Modelos', 'asset_model' => 'Modelo', - 'asset' => 'Equipo', + 'asset' => 'Activo', 'asset_report' => 'Informe de activos', 'asset_tag' => 'Placa del activo', 'asset_tags' => 'Placas de activos', 'assets_available' => 'Activos disponibles', 'accept_assets' => 'Aceptar activos :name', 'accept_assets_menu' => 'Aceptar activos', - 'audit' => 'Auditoría', + 'audit' => 'Auditar', 'audit_report' => 'Registro de auditoría', 'assets' => 'Equipos', 'assets_audited' => 'activos auditados', 'assets_checked_in_count' => 'activos ingresados', 'assets_checked_out_count' => 'activos asignados', 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', - 'assigned_date' => 'Fecha asignada', + 'assigned_date' => 'Fecha de asignación', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', 'avatar_delete' => 'Eliminar Avatar', @@ -44,7 +44,7 @@ return [ 'back' => 'Atras', 'bad_data' => 'Ningún resultado. ¿Quizá un dato incorrecto?', 'bulkaudit' => 'Auditoría masiva', - 'bulkaudit_status' => 'Estado de auditoría', + 'bulkaudit_status' => 'Estado de la auditoría', 'bulk_checkout' => 'Asignación masiva', 'bulk_edit' => 'Editar en grupo', 'bulk_delete' => 'Eliminar en grupo', @@ -66,7 +66,7 @@ return [ 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', - 'click_here' => 'Pulsa aquí', + 'click_here' => 'Haga clic aquí', 'clear_selection' => 'Borrar selección', 'companies' => 'Compañías', 'company' => 'Compañía', @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumibles', 'country' => 'País', 'could_not_restore' => 'Error al restaurar :item_type: :error', - 'not_deleted' => 'El :item_type no está borrado por lo que no puede ser restaurado', + 'not_deleted' => ':item_type no está eliminado; por lo tanto, no se puede restaurar', 'create' => 'Crear nuevo', 'created' => 'Artículo creado', 'created_asset' => 'equipo creado', @@ -95,10 +95,10 @@ return [ 'days_to_next_audit' => 'Días a la próxima auditoría', 'date' => 'Fecha', 'debug_warning' => '¡Advertencia!', - 'debug_warning_text' => 'Esta aplicación esta corriendo en modo producción con debugging activado. Esto puede exponer datos sensibles si su aplicación es accesible desde el exterior. Desactive el modo debug cambiando el valor APP_DEBUG en su archivo .env a false.', + 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con depuración habilitada. Esto puede exponer datos sensibles si su aplicación es accedida desde el mundo exterior. Deshabilite el modo de depuración configurando el valor APP_DEBUG en su archivo .env a false.', 'delete' => 'Borrar', 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', - 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', + 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no puede deshacerse.', 'deleted' => 'Borrado', 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', - 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', + 'lastnamefirstname' => 'Apellido.Nombre (smith.jane@example.com)', 'first_name' => 'Nombre', 'first_name_format' => 'Nombre (jane@ejemplo.com)', 'files' => 'Archivos', @@ -148,7 +148,7 @@ return [ 'github_markdown' => 'Este campo acepta el formateo flavored de GitHub.', 'groups' => 'Grupos', 'gravatar_email' => 'Gravatar Email', - 'gravatar_url' => 'Cambia tu avatar en Gravatar.com.', + 'gravatar_url' => 'Cambie su avatar en Gravatar.com.', 'history' => 'Historial', 'history_for' => 'Historial de', 'id' => 'Id', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Borrar imagen', 'include_deleted' => 'Incluir activos eliminados', 'image_upload' => 'Cargar imagen', - 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', - 'filetypes_size_help' => 'El tamaño máximo de carga permitido es :size.', - 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', + 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido para cargar es :size.', + 'filetypes_size_help' => 'El tamaño máximo permitido para cargar es :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg, y avif. El tamaño máximo permitido para cargar es :size.', 'unaccepted_image_type' => 'No fue posible leer este archivo de imagen. Tipos de archivo aceptados son jpg, webp, png, gif y svg. El mimetype de este archivo es: :mimetype.', 'import' => 'Importar', 'import_this_file' => 'Asociar campos y procesar este archivo', @@ -183,17 +183,17 @@ return [ 'licenses_available' => 'Licencias disponibles', 'licenses' => 'Licencias', 'list_all' => 'Mostrar todos', - 'loading' => 'Cargando... por favor espere....', + 'loading' => 'Cargando... por favor espere...', 'lock_passwords' => 'Este valor de campo no se guardará en una instalación de demostración.', 'feature_disabled' => 'Esta característica se ha desactivado para la versión de demostración.', 'location' => 'Ubicación', 'location_plural' => 'Ubicación|Ubicaciones', 'locations' => 'Ubicaciones', - 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del Logo es 50px de alto x 500px de ancho. ', + 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del logo es 50px de alto x 500px de ancho. ', 'logout' => 'Desconexión', 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimientos', - 'manage_api_keys' => 'Administrar claves API', + 'manage_api_keys' => 'Administrar las claves del API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite Github con sabor a markdown.', @@ -242,10 +242,10 @@ return [ 'requestable_models' => 'Modelos disponibles para solicitar', 'requestable_items' => 'Artículos que se pueden solicitar', 'requested' => 'Solicitado', - 'requested_date' => 'Fecha solicitada', + 'requested_date' => 'Fecha de solicitud', 'requested_assets' => 'Elementos solicitados', 'requested_assets_menu' => 'Elementos solicitados', - 'request_canceled' => 'Solicitud Cancelada', + 'request_canceled' => 'Solicitud cancelada', 'request_item' => 'Solicitar este elemento', 'external_link_tooltip' => 'Enlace externo a', 'save' => 'Guardar', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', 'select_category' => 'Seleccionar una categoría', - 'select_datasource' => 'Seleccionar un origen de datos', + 'select_datasource' => 'Seleccione un origen de datos', 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de amortización', 'select_location' => 'Seleccionar una ubicación', @@ -274,16 +274,17 @@ return [ 'signed_off_by' => 'Firmado por', 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Hola! ¡Parece que la integración de :app con Snipe-IT funciona!', 'some_features_disabled' => 'MODO DE DEMOSTRACIÓN: Algunas funciones estan desactivadas para esta instalación.', 'site_name' => 'Sitio', 'state' => 'Provincia', 'status_labels' => 'Etiquetas de estado', + 'status_label' => 'Status Label', 'status' => 'Estado', 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar?', + 'sure_to_delete' => '¿Está seguro de que desea eliminar', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', @@ -303,7 +304,7 @@ return [ 'uploaded' => 'Cargado', 'user' => 'Usuario', 'accepted' => 'aceptado', - 'declined' => 'declinado', + 'declined' => 'rechazado', 'declined_note' => 'Notas de rechazo', 'unassigned' => 'Sin asignar', 'unaccepted_asset_report' => 'Activos no aceptados', @@ -332,7 +333,7 @@ return [ 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', 'accept_decline' => 'Aceptar/Rechazar', - 'sign_tos' => 'Firma abajo para indicar que estás de acuerdo con los términos de servicio:', + 'sign_tos' => 'Firme abajo para indicar que está de acuerdo con los términos de servicio:', 'clear_signature' => 'Borrar firma', 'show_help' => 'Mostrar ayuda', 'hide_help' => 'Ocultar ayuda', @@ -340,15 +341,15 @@ return [ 'hide_deleted' => 'Ocultar eliminados', 'email' => 'Correo electrónico', 'do_not_change' => 'No cambiar', - 'bug_report' => 'Reportar un error', + 'bug_report' => 'Reporte un error', 'user_manual' => 'Manual del usuario', 'setup_step_1' => 'Paso 1', 'setup_step_2' => 'Paso 2', 'setup_step_3' => 'Paso 3', 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', - 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear usuario Administrador', + 'setup_create_database' => 'Crear tablas de la base de datos', + 'setup_create_admin' => 'Crear usuario administrador', 'setup_done' => '¡Finalizada!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado', @@ -425,7 +426,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlo(s) o rechazarlo(s)', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -447,10 +448,10 @@ return [ 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', 'no_users_selected' => 'Ningún usuario seleccionado', 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', - 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merge_success' => '!:count usuarios fusionados con éxito en :into_username!', 'merged' => 'fusionado', - 'merged_log_this_user_into' => 'Usuario fusionado (ID :to_id - :to_username) con el ID de usuario :from_id (:from_username) ', - 'merged_log_this_user_from' => 'ID de usuario fusionado :from_id (:from_username) con este usuario (ID :to_id - :to_username)', + 'merged_log_this_user_into' => 'Se fusionó este usuario (ID :to_id - :to_username) en ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_from' => 'Se fusionó usuario ID :from_id (:from_username) en este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y Guardar', 'update_existing_values' => '¿Actualizar valores existentes?', 'auto_incrementing_asset_tags_disabled_so_tags_required' => 'La generación autoincrementable de las placas de activos está desactivada, por lo que todas las filas deben tener la columna "Asset Tag" con información.', @@ -471,7 +472,7 @@ return [ 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', 'setup_migration_output' => 'Salida de Migración:', 'setup_migration_create_user' => 'Siguiente: Crear usuario', - 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero deberá confirmarlo.', + 'importer_generic_error' => 'La importación del archivo se ha completado, pero recibimos un error. Esto suele deberse a la limitación de la API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí, pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', @@ -490,7 +491,7 @@ return [ 'checked_out_to_fullname' => 'Asignado a: Nombre completo', 'checked_out_to_first_name' => 'Asignado a: Nombre', 'checked_out_to_last_name' => 'Asignado a: Apellido', - 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_username' => 'Asignado a: Nombre de usuario', 'checked_out_to_email' => 'Asignado a: correo electrónico', 'checked_out_to_tag' => 'Asignado a: Placa de activo', 'manager_first_name' => 'Nombre del supervisor', @@ -551,12 +552,12 @@ return [ 'components' => ':count component|:count componentes', ], 'more_info' => 'Más información', - 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'quickscan_bulk_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'whoops' => '¡Uy!', 'something_went_wrong' => 'Algo falló en su solicitud.', 'close' => 'Cerrar', 'expires' => 'Vence', - 'map_fields'=> 'Asociar el campo :item_type', + 'map_fields'=> 'Asociar campos para :item_type', 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-MX/help.php b/resources/lang/es-MX/help.php index e130e3833..2d07c2fbc 100644 --- a/resources/lang/es-MX/help.php +++ b/resources/lang/es-MX/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', + 'audit_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', diff --git a/resources/lang/es-MX/localizations.php b/resources/lang/es-MX/localizations.php index c0ff11555..7a5987bf9 100644 --- a/resources/lang/es-MX/localizations.php +++ b/resources/lang/es-MX/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayo', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Noruego', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Noruego Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persa', 'pl-PL'=> 'Polaco', 'pt-PT'=> 'Portugués', diff --git a/resources/lang/es-MX/mail.php b/resources/lang/es-MX/mail.php index e9db2f79e..74066ef97 100644 --- a/resources/lang/es-MX/mail.php +++ b/resources/lang/es-MX/mail.php @@ -46,7 +46,7 @@ return [ 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', - 'click_to_confirm' => 'Por favor, pulsa en el siguiente enlace para verificar tu cuenta de :web:', + 'click_to_confirm' => 'Por favor, haga clic en el siguiente enlace para confirmar su cuenta de :web:', 'current_QTY' => 'Cantidad actual', 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', @@ -58,7 +58,7 @@ return [ 'item' => 'Elemento:', 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', - 'link_to_update_password' => 'Haga clic en el siguiente enlace para actualizar su: contraseña de la web:', + 'link_to_update_password' => 'Por favor, haga clic en el siguiente enlace para actualizar contraseña de :web :', 'login' => 'Entrar:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', @@ -72,7 +72,7 @@ return [ 'read_the_terms_and_click' => 'Por favor, lea los términos de uso a continuación, y haga clic en el enlace en la parte inferior para confirmar que usted lee y acepta las condiciones de uso, y han recibido el activo.', 'requested' => 'Solicitado:', 'reset_link' => 'Su enlace de restablecimiento de contraseña', - 'reset_password' => 'Haga Clic aquí para restablecer su contraseña:', + 'reset_password' => 'Haaga clic aquí para restablecer tu contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Serial', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', @@ -82,7 +82,7 @@ return [ 'test_email' => 'Email de prueba de Snipe-IT', 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', - 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', + 'to_reset' => 'Para restaurar tu contraseña de :web, diligencie este formulario:', 'type' => 'Tipo', 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', diff --git a/resources/lang/es-MX/reminders.php b/resources/lang/es-MX/reminders.php index 2269768b6..98f281956 100644 --- a/resources/lang/es-MX/reminders.php +++ b/resources/lang/es-MX/reminders.php @@ -14,7 +14,7 @@ return array( */ "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", - "user" => "Usuario o E-Mail incorrectos", + "user" => "El nombre de usuario o la dirección de correo electrónico son incorrectos", "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', diff --git a/resources/lang/es-MX/validation.php b/resources/lang/es-MX/validation.php index f2198ee0e..a153b545f 100644 --- a/resources/lang/es-MX/validation.php +++ b/resources/lang/es-MX/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', ], + 'percent' => 'El mínimo de amortización debe estar entre 0 y 100 cuando el tipo de amortización es porcentual.', + 'present' => 'El campo: atributo debe estar presente.', 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido.', + 'custom_field_not_found' => 'Este campo parece que no existe, por favor, compruebe los nombres de sus campos personalizados.', + 'custom_field_not_found_on_model' => 'Este campo parece existir, pero no está disponible en este conjunto de campos para el modelo de activo.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/es-VE/account/general.php b/resources/lang/es-VE/account/general.php index 2520857ca..4280c37db 100644 --- a/resources/lang/es-VE/account/general.php +++ b/resources/lang/es-VE/account/general.php @@ -10,6 +10,8 @@ return array( 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Las credenciales de la API están establecidas para expirar en:', 'api_reference' => 'Consulte API reference para encontrar los puntos finales (endpoints) del API y documentación adicional.', - 'profile_updated' => 'Cuenta actualizada exitosamente', + 'profile_updated' => 'La cuenta fue actualizada exitosamente', 'no_tokens' => 'No ha creado ninguna credencial de acceso personal.', + 'enable_sounds' => 'Habilitar efectos de sonido', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/es-VE/admin/accessories/message.php b/resources/lang/es-VE/admin/accessories/message.php index 0d2940bf8..755792fd7 100644 --- a/resources/lang/es-VE/admin/accessories/message.php +++ b/resources/lang/es-VE/admin/accessories/message.php @@ -13,7 +13,7 @@ return array( 'update' => array( 'error' => 'El accesorio no fue actualizado, por favor, inténtelo de nuevo', - 'success' => 'El accesorio se ha actualizado con éxito.' + 'success' => 'El accesorio fue actualizado con éxito.' ), 'delete' => array( diff --git a/resources/lang/es-VE/admin/custom_fields/general.php b/resources/lang/es-VE/admin/custom_fields/general.php index 347067715..9ea814cc5 100644 --- a/resources/lang/es-VE/admin/custom_fields/general.php +++ b/resources/lang/es-VE/admin/custom_fields/general.php @@ -41,7 +41,7 @@ return [ 'about_custom_fields_title' => 'Acerca de campos personalizados', 'about_custom_fields_text' => 'Los campos personalizados le permiten agregar atributos arbitrarios a los activos.', 'add_field_to_fieldset' => 'Añadir campo al grupo de campos', - 'make_optional' => 'Requerido - haga click para hacerlo opcional', + 'make_optional' => 'Requerido - haga clic para hacerlo opcional', 'make_required' => 'Opcional - haga click para hacerlo opcional', 'reorder' => 'Reordenar', 'db_field' => 'Campo en base de datos', diff --git a/resources/lang/es-VE/admin/departments/table.php b/resources/lang/es-VE/admin/departments/table.php index 8d97ccac1..aa3f6b3c5 100644 --- a/resources/lang/es-VE/admin/departments/table.php +++ b/resources/lang/es-VE/admin/departments/table.php @@ -7,5 +7,5 @@ return array( 'manager' => 'Supervisor', 'location' => 'Ubicación', 'create' => 'Crear departamento', - 'update' => 'Actualizar Departamento', + 'update' => 'Actualizar departamento', ); diff --git a/resources/lang/es-VE/admin/hardware/general.php b/resources/lang/es-VE/admin/hardware/general.php index 100fe91c2..4a48f4692 100644 --- a/resources/lang/es-VE/admin/hardware/general.php +++ b/resources/lang/es-VE/admin/hardware/general.php @@ -21,18 +21,18 @@ return [ 'requested' => 'Solicitado', 'not_requestable' => 'No puede solicitarse', 'requestable_status_warning' => 'No cambiar el estado solicitable', - 'restore' => 'Restaurar Activo', + 'restore' => 'Restaurar activo', 'pending' => 'Pendiente', 'undeployable' => 'No utilizable', 'undeployable_tooltip' => 'Este activo tiene una etiqueta de estado que es no utilizable y no puede ser asignado en este momento.', 'view' => 'Ver activo', 'csv_error' => 'Tiene un error en su archivo CSV:', - 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los ítems al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', + 'import_text' => '

Cargue un archivo CSV que contenga el historial de los activos. Los activos y los usuarios DEBEN existir ya en el sistema, o serán omitidos. La comparación de activos para importar el historial se realiza con la placa del activo. Intentaremos encontrar un usuario usando el nombre del usuario que proporcione y los criterios que seleccione a continuación. Si no selecciona ningún criterio, el sistema simplemente intentará usar el formato de nombre de usuario configurado en Administrador > Configuración General.

Los campos incluidos en el CSV deben coincidir con los encabezados: Asset Tag, Name, Checkout Date, Checkin Date. Cualquier campo adicional será ignorado.

Checkin Date(Fecha de recepción): dejar en blanco o usar fechas futuras asignará los elementos al usuario asociado. Excluir la columna Checkin Date creará una fecha de recepción con la fecha de hoy.

', 'csv_import_match_f-l' => 'Intente emparejar usuarios usando el formato nombre.apellido (jane.smith)', 'csv_import_match_initial_last' => 'Intente emparejar los usuarios usando el formato inicial del nombre y apellido (jsmith)', 'csv_import_match_first' => 'Intentar emparejar a los usuarios usando el formato primer nombre (jane)', 'csv_import_match_email' => 'Intente emparejar los usuarios usando correo electrónico como nombre de usuario', - 'csv_import_match_username' => 'Intente emparejar los usuarios usando usuario', + 'csv_import_match_username' => 'Intente emparejar los usuarios usando nombre de usuario', 'error_messages' => 'Mensajes de error:', 'success_messages' => 'Mensajes de éxito:', 'alert_details' => 'Por favor vea abajo para más detalles.', diff --git a/resources/lang/es-VE/admin/hardware/message.php b/resources/lang/es-VE/admin/hardware/message.php index 68139d3e3..8bef2987e 100644 --- a/resources/lang/es-VE/admin/hardware/message.php +++ b/resources/lang/es-VE/admin/hardware/message.php @@ -34,7 +34,7 @@ return [ 'audit' => [ 'error' => 'Auditoría de activos fallida: :error ', - 'success' => 'Audoría de activo registrada con éxito.', + 'success' => 'Auditoría de activos registrada correctamente.', ], @@ -51,7 +51,7 @@ return [ ], 'import' => [ - 'import_button' => 'Proceso para importar', + 'import_button' => 'Importar', 'error' => 'Algunos de los elementos no se importaron correctamente.', 'errorDetail' => 'Lo siguientes elementos no se importaron debido a errores.', 'success' => 'Su archivo ha sido importado', diff --git a/resources/lang/es-VE/admin/kits/general.php b/resources/lang/es-VE/admin/kits/general.php index 0236af3ec..ae87ae332 100644 --- a/resources/lang/es-VE/admin/kits/general.php +++ b/resources/lang/es-VE/admin/kits/general.php @@ -23,17 +23,17 @@ return [ 'update_appended_model' => 'Actualizar modelo añadido', 'license_error' => 'Licencia ya adjunta al kit', 'license_added_success' => 'Licencia creada con éxito', - 'license_updated' => 'La licencia se ha actualizado correctamente', + 'license_updated' => 'La licencia fue actualizada correctamente', 'license_none' => 'La licencia no existe', 'license_detached' => 'Licencia fue separada con éxito', 'consumable_added_success' => 'Consumible creado con éxito', - 'consumable_updated' => 'Consumible se ha actualizado correctamente', + 'consumable_updated' => 'El consumible fue actualizado correctamente', 'consumable_error' => 'Consumible ya conectado al kit', 'consumable_deleted' => 'El borrado fue exitoso', 'consumable_none' => 'El consumible no existe', 'consumable_detached' => 'Consumible fue separado con éxito', 'accessory_added_success' => 'Accesorio añadido correctamente', - 'accessory_updated' => 'El accesorio se ha actualizado correctamente', + 'accessory_updated' => 'El accesorio fue actualizado correctamente', 'accessory_detached' => 'Accesorio fue separado con éxito', 'accessory_error' => 'El accesorio ya está conectado al kit', 'accessory_deleted' => 'El borrado fue exitoso', @@ -42,9 +42,9 @@ return [ 'checkout_error' => 'Error al asignar', 'kit_none' => 'El kit no existe', 'kit_created' => 'El kit se creó con éxito', - 'kit_updated' => 'El kit se actualizó con éxito', + 'kit_updated' => 'El kit fue actualizado correctamente', 'kit_not_found' => 'Kit no encontrado', 'kit_deleted' => 'Kit eliminado correctamente', - 'kit_model_updated' => 'El modelo se ha actualizado correctamente', + 'kit_model_updated' => 'El modelo fue actualizado correctamente', 'kit_model_detached' => 'Modelo fue separado con éxito', ]; diff --git a/resources/lang/es-VE/admin/labels/message.php b/resources/lang/es-VE/admin/labels/message.php index 6f03c9469..01006397c 100644 --- a/resources/lang/es-VE/admin/labels/message.php +++ b/resources/lang/es-VE/admin/labels/message.php @@ -2,9 +2,9 @@ return [ - 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, tiene :actual.', - 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtuvo :actual.', - 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtuvo :actual.', + 'invalid_return_count' => 'El recuento no es válido desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_type' => 'Tipo no válido devuelto desde :name. Esperado :expected, obtenido :actual.', + 'invalid_return_value' => 'Valor no válido devuelto de :name. Esperado :expected, obtenido :actual.', 'does_not_exist' => 'La etiqueta no existe', diff --git a/resources/lang/es-VE/admin/licenses/message.php b/resources/lang/es-VE/admin/licenses/message.php index ba7e41824..d260f4ad9 100644 --- a/resources/lang/es-VE/admin/licenses/message.php +++ b/resources/lang/es-VE/admin/licenses/message.php @@ -4,7 +4,7 @@ return array( 'does_not_exist' => 'La licencia no existe o no tiene permiso para verla.', 'user_does_not_exist' => 'El usuario no existe o no tiene permiso para verlos.', - 'asset_does_not_exist' => 'El activo que intentas asociar con esta licencia no existe.', + 'asset_does_not_exist' => 'El activo que intenta asociar con esta licencia no existe.', 'owner_doesnt_match_asset' => 'El activo que está intentando asignar con esta licencia está asignado a un usuario diferente al de la persona seleccionada de la lista.', 'assoc_users' => 'Esta licencia está actualmente asignada a un usuario y no puede ser eliminada. Por favor, reciba primero la licencia y vuelva a intentarlo. ', 'select_asset_or_person' => 'Debe seleccionar un activo o un usuario, pero no ambos.', diff --git a/resources/lang/es-VE/admin/locations/message.php b/resources/lang/es-VE/admin/locations/message.php index 686ce413b..eef07cb97 100644 --- a/resources/lang/es-VE/admin/locations/message.php +++ b/resources/lang/es-VE/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'La localización no existe.', - 'assoc_users' => 'Esta ubicación no se puede eliminar actualmente porque es la ubicación de al menos un activo o de un usuario, tiene activos asignados a ella, o es la ubicación padre de otra ubicación. Por favor actualice las referencias que correspondan. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Esta ubicación está actualmente asociada con al menos un activo y no puede ser eliminada. Por favor actualice sus activos para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assoc_child_loc' => 'Esta ubicación es actualmente el padre de al menos una ubicación hija y no puede ser eliminada. Por favor actualice sus ubicaciones para que ya no hagan referencia a esta ubicación e inténtelo de nuevo. ', 'assigned_assets' => 'Activos asignados', @@ -11,7 +11,7 @@ return array( 'create' => array( - 'error' => 'La ubicación no pudo ser creada, por favor inténtelo de nuevo.', + 'error' => 'La ubicación no pudo ser creada, por favor, inténtelo de nuevo.', 'success' => 'La ubicación fue creada exitosamente.' ), diff --git a/resources/lang/es-VE/admin/locations/table.php b/resources/lang/es-VE/admin/locations/table.php index 5fde05586..ba6240342 100644 --- a/resources/lang/es-VE/admin/locations/table.php +++ b/resources/lang/es-VE/admin/locations/table.php @@ -2,7 +2,7 @@ return [ 'about_locations_title' => 'Acerca de las ubicaciones', - 'about_locations' => 'Las ubicaciones son utilizadas para hacer seguimiento de la información sobre ubicación de usuarios, activos, y otros ítems', + 'about_locations' => 'Las ubicaciones se utilizan para hacer un seguimiento de la ubicación de usuarios, activos y otros elementos', 'assets_rtd' => 'Activos', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Activos asignados', 'id' => 'ID', @@ -35,8 +35,8 @@ return [ 'asset_expected_checkin' => 'Fecha esperada de devolución', 'date' => 'Fecha:', 'phone' => 'Teléfono ubicación', - 'signed_by_asset_auditor' => 'Firmado por (Juego de Acciones):', - 'signed_by_finance_auditor' => 'Firmado por (Monitor de Finanzas):', - 'signed_by_location_manager' => 'Firmado por (Administrador de ubicación):', + 'signed_by_asset_auditor' => 'Firmado por (Auditor de Activos):', + 'signed_by_finance_auditor' => 'Firmado por (Auditor de Finanzas):', + 'signed_by_location_manager' => 'Firmado por (Supervisor de la ubicación):', 'signed_by' => 'Firmado por:', ]; diff --git a/resources/lang/es-VE/admin/settings/general.php b/resources/lang/es-VE/admin/settings/general.php index 515fcfac0..1f8c8c01f 100644 --- a/resources/lang/es-VE/admin/settings/general.php +++ b/resources/lang/es-VE/admin/settings/general.php @@ -6,7 +6,7 @@ return [ 'ad_domain_help' => 'Algunas veces coincide con el dominio de su correo electrónico, pero no siempre.', 'ad_append_domain_label' => 'Añadir nombre de dominio', 'ad_append_domain' => 'Añadir nombre de dominio al campo de nombre de usuario', - 'ad_append_domain_help' => 'El usuario no necesita escribir "username@domain.local", puede escribir únicamente "username".', + 'ad_append_domain_help' => 'El usuario no necesita escribir "usuario@dominio.local", puede escribir únicamente "usuario".', 'admin_cc_email' => 'Copiar en correo electrónico', 'admin_cc_email_help' => 'Si desea enviar una copia de los correos electrónicos de recepción/devolución que se envían a los usuarios a una cuenta de correo electrónico adicional, escríbala aquí. De lo contrario, deje este campo en blanco.', 'admin_settings' => 'Configuración de administración', @@ -23,7 +23,7 @@ return [ 'asset_ids' => 'Códigos de los activos', 'audit_interval' => 'Intervalo de Auditoría', 'audit_interval_help' => 'Si está obligado a auditar físicamente sus activos con regularidad, introduzca el intervalo en meses que utilice. Si actualiza este valor, se actualizarán todas las "próximas fechas de auditoría" de los activos con una fecha de auditoría próxima.', - 'audit_warning_days' => 'Umbral de Aviso de Auditoría', + 'audit_warning_days' => 'Umbral de advertencia de auditoría', 'audit_warning_days_help' => '¿Con cuántos días de antelación es necesario avisar que se deben auditar los activos?', 'auto_increment_assets' => 'Generar placas de activos autoincrementables', 'auto_increment_prefix' => 'Prefijo (opcional)', @@ -41,7 +41,7 @@ return [ 'confirm_purge_help' => 'Introduzca el texto "DELETE" en la casilla de abajo para purgar sus registros borrados. Esta acción no se puede deshacer y borrará PERMANENTAMENTE todos los elementos y usuarios eliminados. Debería hacer primero una copia de seguridad, para estar seguro.', 'custom_css' => 'CSS Personalizado', 'custom_css_help' => 'Introduzca cualquier CSS personalizado que desee utilizar. No incluya las etiquetas <style></style>.', - 'custom_forgot_pass_url' => 'Personalizar URL de Restablecimiento de Contraseña', + 'custom_forgot_pass_url' => 'URL de restablecimiento de contraseña personalizada', 'custom_forgot_pass_url_help' => 'Esto remplaza la URL incorporada para contraseña olvidada en la pantalla de inicio, útil para dirigir a las personas a una funcionalidad de restablecimiento de interna o alojada en LDPA. Esto deshabilitará la funcionalidad local de contraseña olvidada.', 'dashboard_message' => 'Mensaje en el tablero', 'dashboard_message_help' => 'Este texto aparecerá en el panel para cualquiera que tenga permiso de ver el panel.', @@ -110,13 +110,13 @@ return [ 'ldap_filter' => 'Filtro LDAP', 'ldap_pw_sync' => 'Sincronización de Contraseña LDAP', 'ldap_pw_sync_help' => 'Desmarque esta casilla si no desea mantener las contraseñas LDAP sincronizadas con las contraseñas locales. Si desactiva esta opción, los usuarios no podrán iniciar sesión si, por algún motivo, no se puede acceder al servidor LDAP.', - 'ldap_username_field' => 'Campo de Nombre de Usuario', + 'ldap_username_field' => 'Campo nombre de usuario', 'ldap_lname_field' => 'Apellido', 'ldap_fname_field' => 'Primer Nombre LDAP', - 'ldap_auth_filter_query' => 'Solicitud de Autenticación LDAP', + 'ldap_auth_filter_query' => 'Consulta de autentificación LDAP', 'ldap_version' => 'Versión LDAP', 'ldap_active_flag' => 'Flag activo LDAP', - 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles items, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', + 'ldap_activated_flag_help' => 'Este valor se utiliza para determinar si un usuario sincronizado puede iniciar sesión en Snipe-IT. No afecta a la capacidad de asignarles o retirarles elementos, y debería ser el nombre de atributo dentro de su AD/LDAP, no el valor.

Si este campo está configurado a un nombre de campo que no existe en su AD/LDAP, o el valor en el campo AD/LDAP se establece en 0 o falso, el inicio de sesión de usuario será deshabilitado. Si el valor en el campo AD/LDAP está establecido en 1 o true o cualquier otro texto significa que el usuario puede iniciar sesión. Cuando el campo está en blanco en su AD, respetamos el atributo userAccountControl, que generalmente permite a los usuarios no suspendidos iniciar sesión.', 'ldap_emp_num' => 'Número de Empleado LDAP', 'ldap_email' => 'Correo electrónico LDAP', 'ldap_test' => 'Probar LDAP', @@ -127,7 +127,7 @@ return [ 'login' => 'Intentos de inicio de sesión', 'login_attempt' => 'Intento de inicio de sesión', 'login_ip' => 'Dirección IP', - 'login_success' => '¿Éxito?', + 'login_success' => '¿Exitoso?', 'login_user_agent' => 'Agente de usuario', 'login_help' => 'Lista de intentos de inicio de sesión', 'login_note' => 'Nota de Inicio de Sesión', @@ -215,9 +215,11 @@ return [ 'webhook_endpoint' => 'Endpoint de :app', 'webhook_integration' => ':app Ajustes', 'webhook_test' =>'Probar integración con :app', - 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en tu cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', + 'webhook_integration_help' => 'La integración con :app es opcional, sin embargo, el punto final (endpoint) y el canal son necesarios si desea usarla. Para configurar la integración con :app, primero debe crear un webhook entrante en su cuenta :app. Haga clic en el botón Probar integración con :app para confirmar que su configuración es correcta antes de guardar. ', 'webhook_integration_help_button' => 'Una vez que haya guardado la información de :app, aparecerá un botón de prueba.', 'webhook_test_help' => 'Compruebe si su integración con :app está configurada correctamente. PRIMERO DEBE GUARDAR LA CONFIGURACION ACTUALIZADA DE :app.', + 'shortcuts_enabled' => 'Habilitar accesos directos', + 'shortcuts_help_text' => 'Windows: Alt + Tecla de acceso, Mac: Control + Opción + Tecla de acceso', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Enlace al soporte en el pie de página ', 'support_footer_help' => 'Especifica quién ve los links a la información de Soporte Snipe-IT y el Manual de Usuario', @@ -231,7 +233,7 @@ return [ 'brand_help' => 'Logo, nombre del sitio', 'web_brand' => 'Tipo de marca web', 'about_settings_title' => 'Acerca de las Configuraciones', - 'about_settings_text' => 'Estas configuraciones te dejan personalizar ciertos aspectos de tu instalación.', + 'about_settings_text' => 'Estas configuraciones le permiten personalizar ciertos aspectos de su instalación.', 'labels_per_page' => 'Etiquetas por página', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', 'next_auto_tag_base' => 'Siguiente incremento automático', @@ -334,7 +336,7 @@ return [ 'employee_number' => 'Número de empleado', 'create_admin_user' => 'Crear un usuario ::', 'create_admin_success' => '¡Éxito! ¡Su usuario admin ha sido añadido!', - 'create_admin_redirect' => '¡Haz clic aquí para acceder a tu aplicación!', + 'create_admin_redirect' => '¡Haga clic aquí para acceder a su aplicación!', 'setup_migrations' => 'Migraciones de Base de Datos ::', 'setup_no_migrations' => 'No hay nada que migrar. ¡Las tablas de la base de datos ya estaban configuradas!', 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', diff --git a/resources/lang/es-VE/admin/settings/message.php b/resources/lang/es-VE/admin/settings/message.php index ddae669ca..9bc01281b 100644 --- a/resources/lang/es-VE/admin/settings/message.php +++ b/resources/lang/es-VE/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Sí, restaurarlo. Reconozco que esto sobrescribirá cualquier dato existente actualmente en la base de datos. Esto también cerrará la sesión de todos sus usuarios existentes (incluido usted).', 'restore_confirm' => '¿Está seguro que desea restaurar su base de datos desde :filename?' ], + 'restore' => [ + 'success' => 'Su copia de respaldo del sistema ha sido restaurada. Por favor, inicie sesión nuevamente.' + ], 'purge' => [ 'error' => 'Ha ocurrido un error mientras se realizaba el purgado. ', 'validation_failed' => 'Su confirmación de purga es incorrecta. Por favor, escriba la palabra "DELETE" en el cuadro de confirmación.', diff --git a/resources/lang/es-VE/admin/suppliers/table.php b/resources/lang/es-VE/admin/suppliers/table.php index 541da852b..95560d6ee 100644 --- a/resources/lang/es-VE/admin/suppliers/table.php +++ b/resources/lang/es-VE/admin/suppliers/table.php @@ -2,7 +2,7 @@ return array( 'about_suppliers_title' => 'Acerca de los Proveedores', - 'about_suppliers_text' => 'Los proveedores son utilizados para seguir la fuente de los artículos', + 'about_suppliers_text' => 'Los proveedores se utilizan para hacer seguimiento al origen de los elementos', 'address' => 'Dirección del Proveedor', 'assets' => 'Activos', 'city' => 'Ciudad', diff --git a/resources/lang/es-VE/admin/users/message.php b/resources/lang/es-VE/admin/users/message.php index 1743586c1..6e75b54dd 100644 --- a/resources/lang/es-VE/admin/users/message.php +++ b/resources/lang/es-VE/admin/users/message.php @@ -48,11 +48,11 @@ return array( 'accept_or_decline' => 'Debe aceptar o rechazar este equipo.', 'cannot_delete_yourself' => 'Nos sentiríamos muy mal si usted se eliminara, por favor reconsidérelo.', 'incorrect_user_accepted' => 'El elemento que ha intentado aceptar no fue asignado a usted.', - 'ldap_could_not_connect' => 'No se pudo conectar al servidor LDAP. Por favor verifica la configuración LDAP de tu servidor en el archivo de configuración LDAP.
Error del servidor LDAP:', - 'ldap_could_not_bind' => 'No se pudo enlazar al servidor LDAP. Por favor verifica la configuración LDAP de tu servidor en el archivo de configuración LDAP.
Error del servidor LDAP: ', - 'ldap_could_not_search' => 'No se pudo buscar el servidor LDAP. Por favor verifica la configuración LDAP de tu servidor en el archivo de configuración LDAP.
Error del servidor LDAP:', - 'ldap_could_not_get_entries' => 'No se pudieron obtener las entradas del servidor LDAP. Por favor verifica la configuración LDAP de tu servidor en el archivo de configuración LDAP.
Error del servidor LDAP:', - 'password_ldap' => 'La contraseña para esta cuenta es manejada por LDAP/Active Directory. Por favor contacta a tu departamento de IT para cambiar tu contraseña. ', + 'ldap_could_not_connect' => 'No se pudo conectar al servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', + 'ldap_could_not_bind' => 'No se ha podido vincular al servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP: ', + 'ldap_could_not_search' => 'No se pudo buscar en el servidor LDAP. Por favor, compruebe la configuración del servidor LDAP en el archivo de configuración LDAP.
Error del servidor LDAP:', + 'ldap_could_not_get_entries' => 'No se han podido obtener entradas del servidor LDAP. Por favor verifique la configuración de su servidor LDAP en su archivo de configuración.
Error del servidor LDAP:', + 'password_ldap' => 'La contraseña para esta cuenta es administrada por LDAP / Active Directory. Póngase en contacto con su departamento de TI para cambiar su contraseña. ', ), 'deletefile' => array( diff --git a/resources/lang/es-VE/admin/users/table.php b/resources/lang/es-VE/admin/users/table.php index 3e0ea5743..9c4351729 100644 --- a/resources/lang/es-VE/admin/users/table.php +++ b/resources/lang/es-VE/admin/users/table.php @@ -5,21 +5,21 @@ return array( 'allow' => 'Permitir', 'checkedout' => 'Activos', 'created_at' => 'Creado', - 'createuser' => 'Crear Usuario', + 'createuser' => 'Crear usuario', 'deny' => 'Denegar', 'email' => 'Correo electrónico', - 'employee_num' => 'No. Empleado.', + 'employee_num' => 'No. Empleado', 'first_name' => 'Nombre', 'groupnotes' => 'Seleccione un grupo para asignar al usuario, recuerde que un usuario asume los permisos del grupo al que se le asigna. Use ctrl+click (o cmd+click en MacOS) para anular la selección de grupos.', 'id' => 'Id', 'inherit' => 'Hereda de', 'job' => 'Cargo', - 'last_login' => 'Último Inicio de Sesión', + 'last_login' => 'Último inicio de sesión', 'last_name' => 'Apellido', 'location' => 'Ubicación', - 'lock_passwords' => 'Los detalles de acceso no pueden ser cambiados en esta instalación.', + 'lock_passwords' => 'Los detalles de inicio de sesión no pueden ser cambiados en esta instalación.', 'manager' => 'Supervisor', - 'managed_locations' => 'Ubicaciones adminsitradas', + 'managed_locations' => 'Ubicaciones gestionadas', 'managed_users' => 'Usuarios gestionados', 'name' => 'Nombre', 'nogroup' => 'Aún no se han creado grupos. Para añadir uno, visite: ', @@ -27,12 +27,12 @@ return array( 'password_confirm' => 'Confirmar Contraseña', 'password' => 'Contraseña', 'phone' => 'Teléfono', - 'show_current' => 'Mostrar Usuarios Actuales', - 'show_deleted' => 'Mostrar Usuarios Eliminados', + 'show_current' => 'Mostrar usuarios actuales', + 'show_deleted' => 'Mostrar usuarios eliminados', 'title' => 'Cargo', 'to_restore_them' => 'para restaurarlos.', 'total_assets_cost' => "Coste total de activos", - 'updateuser' => 'Actualizar Usuario', + 'updateuser' => 'Actualizar usuario', 'username' => 'Nombre de usuario', 'user_deleted_text' => 'Este usuario ha sido marcado como borrado.', 'username_note' => '(Esto es usado sólo para el enlace de Active Directory, no para iniciar sesión.)', diff --git a/resources/lang/es-VE/auth/general.php b/resources/lang/es-VE/auth/general.php index 90be7064f..5c0eb55f2 100644 --- a/resources/lang/es-VE/auth/general.php +++ b/resources/lang/es-VE/auth/general.php @@ -11,7 +11,7 @@ return [ 'ldap_reset_password' => 'Haga clic aquí para restablecer su contraseña LDAP', 'remember_me' => 'Recuérdame', 'username_help_top' => 'Ingrese su nombre de usuario para enviar un enlace de restablecimiento de contraseña.', - 'username_help_bottom' => 'Su nombre de usuario y dirección de correo electrónico puede ser el mismo, pero puede que no lo sea, dependiendo de su configuración. Si no puede recordar su nombre de usuario, póngase en contacto con su administrador.

A los usuarios sin una dirección de correo electrónico asociada no se enviará un enlace por correo electrónico de restablecimiento de contraseña. ', + 'username_help_bottom' => 'Su nombre de usuario y correo electrónico pueden ser el mismo, pero puede que no lo sean, dependiendo de su configuración. Si no recuerda su nombre de usuario, contacte al administrador.

A los nombres de usuario que no tengan un correo electrónico asociado, no se les enviará el enlace de cambio de contraseña. ', 'google_login' => 'Iniciar sesión con Google Workspace', 'google_login_failed' => 'Error al iniciar sesión en Google. Vuelve a intentarlo.', ]; diff --git a/resources/lang/es-VE/auth/message.php b/resources/lang/es-VE/auth/message.php index 28356d9bd..d0362ef00 100644 --- a/resources/lang/es-VE/auth/message.php +++ b/resources/lang/es-VE/auth/message.php @@ -19,7 +19,7 @@ return array( ), 'signin' => array( - 'error' => 'Hubo un problema mientras se intentaba iniciar su sesión, por favor inténtelo de nuevo.', + 'error' => 'Ha habido un problema al iniciar sesión. Por favor, inténtelo de nuevo.', 'success' => 'Ha iniciado sesión exitosamente.', ), @@ -29,17 +29,17 @@ return array( ), 'signup' => array( - 'error' => 'Hubo un problema mientras se creaba la cuenta, por favor inténtalo de nuevo.', + 'error' => 'Hubo un problema al crear la cuenta. Por favor, inténtelo de nuevo.', 'success' => 'Cuenta creada con éxito.', ), 'forgot-password' => array( - 'error' => 'Hubo un problema al intentar obtener un código para restablecer la contraseña, inténtalo de nuevo.', + 'error' => 'Ha habido un problema al obtener un código de restablecimiento de la contraseña. Por favor, inténtelo de nuevo.', 'success' => 'Si esa dirección de correo electrónico existe en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', ), 'forgot-password-confirm' => array( - 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor inténtelo de nuevo.', + 'error' => 'Hubo un problema al intentar restablecer su contraseña, por favor, inténtelo de nuevo.', 'success' => 'Su contraseña se ha restablecido correctamente.', ), diff --git a/resources/lang/es-VE/button.php b/resources/lang/es-VE/button.php index cb7fb8216..dfdefcd12 100644 --- a/resources/lang/es-VE/button.php +++ b/resources/lang/es-VE/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clonar :item_type', 'edit' => 'Editar :item_type', 'delete' => 'Eliminar :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restaurar :item_type', 'create' => 'Crear nuevo :item_type', 'checkout' => 'Asignar :item_type', 'checkin' => 'Ingresar :item_type', diff --git a/resources/lang/es-VE/general.php b/resources/lang/es-VE/general.php index 535cf0d72..85d37148c 100644 --- a/resources/lang/es-VE/general.php +++ b/resources/lang/es-VE/general.php @@ -1,7 +1,7 @@ 'Reestablecer 2FA', + '2FA_reset' => 'Restablecer 2FA', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha de aceptación', @@ -17,7 +17,7 @@ return [ 'administrator' => 'Administrador', 'add_seats' => 'Licencias añadidas', 'age' => "Edad", - 'all_assets' => 'Todos los Activos', + 'all_assets' => 'Todos los activos', 'all' => 'Todo', 'archived' => 'Archivado', 'asset_models' => 'Modelos de Activos', @@ -36,7 +36,7 @@ return [ 'assets_checked_in_count' => 'activos ingresados', 'assets_checked_out_count' => 'activos asignados', 'asset_deleted_warning' => 'Este activo ha sido eliminado. Debe restaurarlo antes de poder asignarlo a alguien.', - 'assigned_date' => 'Fecha asignada', + 'assigned_date' => 'Fecha de asignación', 'assigned_to' => 'Asignado a :name', 'assignee' => 'Asignado a', 'avatar_delete' => 'Borrar Avatar', @@ -44,7 +44,7 @@ return [ 'back' => 'Atrás', 'bad_data' => 'No se ha encontrado nada. ¿Quizás datos incorrectos?', 'bulkaudit' => 'Auditoría Masiva', - 'bulkaudit_status' => 'Auditar Estado', + 'bulkaudit_status' => 'Estado de la auditoría', 'bulk_checkout' => 'Asignación masiva', 'bulk_edit' => 'Edición masiva', 'bulk_delete' => 'Eliminar en masa', @@ -66,7 +66,7 @@ return [ 'checkins_count' => 'Ingresos', 'user_requests_count' => 'Solicitudes', 'city' => 'Ciudad', - 'click_here' => 'Click aquí', + 'click_here' => 'Haga clic aquí', 'clear_selection' => 'Borrar selección', 'companies' => 'Compañías', 'company' => 'Compañía', @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumibles', 'country' => 'País', 'could_not_restore' => 'Error al restaurar :item_type: :error', - 'not_deleted' => 'El :item_type no está borrado por lo que no puede ser restaurado', + 'not_deleted' => ':item_type no está eliminado; por lo tanto, no se puede restaurar', 'create' => 'Crear nuevo', 'created' => 'Elemento Creado', 'created_asset' => 'activo creado', @@ -95,10 +95,10 @@ return [ 'days_to_next_audit' => 'Días para la Próxima Auditoría', 'date' => 'Fecha', 'debug_warning' => '¡Advertencia!', - 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con el depurador activado. Esto puede exponer datos sensibles si tu aplicación es accesible al exterior. Desactiva el modo de depuración mediante la configuración del valor APP_DEBUG en tu archivo .env a false.', + 'debug_warning_text' => 'Esta aplicación se está ejecutando en modo producción con depuración habilitada. Esto puede exponer datos sensibles si su aplicación es accedida desde el mundo exterior. Deshabilite el modo de depuración configurando el valor APP_DEBUG en su archivo .env a false.', 'delete' => 'Borrar', 'delete_confirm' => '¿Está seguro de que desea eliminar :item?', - 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no se puede deshacer.', + 'delete_confirm_no_undo' => '¿Está seguro de que desea eliminar :item? Esto no puede deshacerse.', 'deleted' => 'Borrado', 'delete_seats' => 'Licencias eliminadas', 'deletion_failed' => 'Error al eliminar', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Apellido e inicial del nombre (smith_j@ejemplo.com)', 'firstinitial.lastname' => 'Inicial del nombre y apellido (j.smith@ejemplo.com)', 'firstnamelastinitial' => 'Nombre e inicial del apellido(janes@example.com)', - 'lastnamefirstname' => 'Apellido y nombre (smith.jane@example.com)', + 'lastnamefirstname' => 'Apellido.Nombre (smith.jane@example.com)', 'first_name' => 'Nombre', 'first_name_format' => 'Nombre (jane@ejemplo.com)', 'files' => 'Archivos', @@ -148,7 +148,7 @@ return [ 'github_markdown' => 'Este campo acepta el formateo estilo GitHub.', 'groups' => 'Grupos', 'gravatar_email' => 'Dirección de Correo Gravatar', - 'gravatar_url' => 'Cambia tu avatar en Gravatar.com.', + 'gravatar_url' => 'Cambie su avatar en Gravatar.com.', 'history' => 'Historial', 'history_for' => 'Historial para', 'id' => 'ID', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Borrar Imagen', 'include_deleted' => 'Incluir activos eliminados', 'image_upload' => 'Cargar imagen', - 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido para subir es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido es :size.', - 'filetypes_size_help' => 'El tamaño máximo permitido para subir es :size.', - 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg y avif. El tamaño máximo permitido es :size.', + 'filetypes_accepted_help' => 'El tipo de archivo aceptado es :types. El tamaño máximo permitido es :size.|Los tipos de archivo aceptados son :types. El tamaño máximo permitido para cargar es :size.', + 'filetypes_size_help' => 'El tamaño máximo permitido para cargar es :size.', + 'image_filetypes_help' => 'Los tipos de archivo aceptados son jpg, webp, png, gif, svg, y avif. El tamaño máximo permitido para cargar es :size.', 'unaccepted_image_type' => 'Este archivo de imagen no fue legible. Los tipos de archivo aceptados son jpg, webp, png, gif y svg. El tipo mimetype de este archivo es: :mimetype.', 'import' => 'Importar', 'import_this_file' => 'Asociar campos y procesar este archivo', @@ -169,7 +169,7 @@ return [ 'asset_maintenance_report' => 'Informe mantenimiento de activos', 'asset_maintenances' => 'Mantenimiento de activos', 'item' => 'Elemento', - 'item_name' => 'Nombre del artículo', + 'item_name' => 'Nombre del elemento', 'import_file' => 'importar archivo CSV', 'import_type' => 'Tipo de importación CSV', 'insufficient_permissions' => '¡Permisos insuficientes!', @@ -183,17 +183,17 @@ return [ 'licenses_available' => 'Licencias disponibles', 'licenses' => 'Licencias', 'list_all' => 'Mostrar todos', - 'loading' => 'Cargando... espere por favor....', + 'loading' => 'Cargando... espere por favor...', 'lock_passwords' => 'Este valor de campo no se guardará en una instalación de demostración.', 'feature_disabled' => 'Esta característica ha sido deshabilitada para la instalación demo.', 'location' => 'Ubicación', 'location_plural' => 'Ubicación|Ubicaciones', 'locations' => 'Ubicaciones', - 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del Logo es 50px de alta x 500px. ', + 'logo_size' => 'Los logotipos cuadrados se ven mejor con Logo + Texto. El tamaño máximo del logo es 50px de alto x 500px de ancho. ', 'logout' => 'Cerrar sesión', 'lookup_by_tag' => 'Buscar placa del activo', 'maintenances' => 'Mantenimientos', - 'manage_api_keys' => 'Administrar claves API', + 'manage_api_keys' => 'Administrar las claves del API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite formateo estilo Github.', @@ -242,10 +242,10 @@ return [ 'requestable_models' => 'Modelos disponibles para solicitar', 'requestable_items' => 'Artículos que se pueden solicitar', 'requested' => 'Solicitado', - 'requested_date' => 'Fecha solicitada', + 'requested_date' => 'Fecha de solicitud', 'requested_assets' => 'Activos solicitados', 'requested_assets_menu' => 'Elementos solicitados', - 'request_canceled' => 'Solicitud Cancelada', + 'request_canceled' => 'Solicitud cancelada', 'request_item' => 'Solicitar este elemento', 'external_link_tooltip' => 'Enlace externo a', 'save' => 'Guardar', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Seleccionar todo', 'search' => 'Buscar', 'select_category' => 'Seleccionar una categoría', - 'select_datasource' => 'Seleccionar un origen de datos', + 'select_datasource' => 'Seleccione un origen de datos', 'select_department' => 'Seleccionar un departamento', 'select_depreciation' => 'Seleccionar un tipo de depreciación', 'select_location' => 'Seleccionar una ubicación', @@ -268,22 +268,23 @@ return [ 'select_asset' => 'Seleccionar activo', 'settings' => 'Configuraciones', 'show_deleted' => 'Mostrar eliminados', - 'show_current' => 'Mostrar Actual', + 'show_current' => 'Mostrar actual', 'sign_in' => 'Iniciar sesión', 'signature' => 'Firma', 'signed_off_by' => 'Firmado por', 'skin' => 'Apariencia', 'webhook_msg_note' => 'Una notificación se enviará a través de webhook', - 'webhook_test_msg' => '¡Parece que su integración de :app con Snipe-IT está funcionando!', + 'webhook_test_msg' => '¡Hola! ¡Parece que la integración de :app con Snipe-IT funciona!', 'some_features_disabled' => 'MODO DEMO: Algunas funciones están desactivadas para esta instalación.', 'site_name' => 'Nombre del Sitio', 'state' => 'Estado', 'status_labels' => 'Etiquetas de estado', + 'status_label' => 'Status Label', 'status' => 'Estado', 'accept_eula' => 'Acuerdo de aceptación', 'supplier' => 'Proveedor', 'suppliers' => 'Proveedores', - 'sure_to_delete' => '¿Está seguro que desea eliminar?', + 'sure_to_delete' => '¿Está seguro de que desea eliminar', 'sure_to_delete_var' => '¿Está seguro de que desea eliminar :item?', 'delete_what' => 'Eliminar :item', 'submit' => 'Enviar', @@ -332,7 +333,7 @@ return [ 'i_accept' => 'Acepto', 'i_decline' => 'Rechazo', 'accept_decline' => 'Aceptar/Rechazar', - 'sign_tos' => 'Regístrate a continuación para indicar que estás de acuerdo con los términos del servicio:', + 'sign_tos' => 'Firme abajo para indicar que está de acuerdo con los términos de servicio:', 'clear_signature' => 'Borrar firma', 'show_help' => 'Mostrar ayuda', 'hide_help' => 'Ocultar ayuda', @@ -340,15 +341,15 @@ return [ 'hide_deleted' => 'Ocultar eliminados', 'email' => 'Correo electrónico', 'do_not_change' => 'No cambiar', - 'bug_report' => 'Reportar un error', + 'bug_report' => 'Reporte un error', 'user_manual' => 'Manual del usuario', 'setup_step_1' => 'Paso 1', 'setup_step_2' => 'Paso 2', 'setup_step_3' => 'Paso 3', 'setup_step_4' => 'Paso 4', 'setup_config_check' => 'Comprobar configuración', - 'setup_create_database' => 'Crear Tablas de Base de Datos', - 'setup_create_admin' => 'Crear usuario Administrador', + 'setup_create_database' => 'Crear tablas de la base de datos', + 'setup_create_admin' => 'Crear usuario administrador', 'setup_done' => '¡Terminado!', 'bulk_edit_about_to' => 'Está a punto de editar lo siguiente: ', 'checked_out' => 'Asignado', @@ -425,7 +426,7 @@ return [ 'assets_by_status_type' => 'Activos por tipo de estado', 'pie_chart_type' => 'Tipo de gráfico circular en el tablero', 'hello_name' => '¡Hola, :name!', - 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlos o rechazarlos', + 'unaccepted_profile_warning' => 'Tiene :count elemento(s) que requiere(n) aceptación. Haga clic aquí para aceptarlo(s) o rechazarlo(s)', 'start_date' => 'Fecha de inicio', 'end_date' => 'Fecha de fin', 'alt_uploaded_image_thumbnail' => 'Miniatura cargada', @@ -447,9 +448,9 @@ return [ 'warning_merge_information' => 'Esta acción NO PUEDE deshacerse y sólo debe ser usada cuando necesite fusionar usuarios debido a una mala importación o sincronización. Asegúrese de ejecutar una copia de seguridad primero.', 'no_users_selected' => 'Ningún usuario seleccionado', 'not_enough_users_selected' => 'Al menos :count usuarios deben ser seleccionados', - 'merge_success' => ':count usuarios fusionados con éxito en :into_username!', + 'merge_success' => '!:count usuarios fusionados con éxito en :into_username!', 'merged' => 'fusionado', - 'merged_log_this_user_into' => 'Fusionado este usuario (ID :to_id - :to_username) con ID de usuario :from_id (:from_username) ', + 'merged_log_this_user_into' => 'Se fusionó este usuario (ID :to_id - :to_username) en ID de usuario :from_id (:from_username) ', 'merged_log_this_user_from' => 'Fusionado ID de usuario :from_id (:from_username) con este usuario (ID :to_id - :to_username)', 'clear_and_save' => 'Limpiar y guardar', 'update_existing_values' => '¿Actualizar valores existentes?', @@ -471,7 +472,7 @@ return [ 'setup_successful_migrations' => 'Se han creado las tablas de la base de datos', 'setup_migration_output' => 'Salida de Migración:', 'setup_migration_create_user' => 'Siguiente: Crear usuario', - 'importer_generic_error' => 'La importación de tu archivo está completa, pero recibimos un error. Esto normalmente es causado por la limitación de API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí. pero debería confirmarlo.', + 'importer_generic_error' => 'La importación del archivo se ha completado, pero recibimos un error. Esto suele deberse a la limitación de la API de terceros desde un webhook de notificación (como Slack) y no habría interferido con la importación en sí, pero debería confirmarlo.', 'confirm' => 'Confirmar', 'autoassign_licenses' => 'Auto-Asignar licencias', 'autoassign_licenses_help' => 'Permitir a este usuario tener licencias asignadas a través de la asignación masiva en la interfaz de usuario o de las herramientas de la línea de comandos (CLI).', @@ -490,7 +491,7 @@ return [ 'checked_out_to_fullname' => 'Asignado a: Nombre completo', 'checked_out_to_first_name' => 'Asignado a: Nombre', 'checked_out_to_last_name' => 'Asignado a: Apellido', - 'checked_out_to_username' => 'Asignado a: Usuario', + 'checked_out_to_username' => 'Asignado a: Nombre de usuario', 'checked_out_to_email' => 'Asignado a: correo electrónico', 'checked_out_to_tag' => 'Asignado a: Placa de activo', 'manager_first_name' => 'Nombre del supervisor', @@ -551,12 +552,12 @@ return [ 'components' => ':count component|:count componentes', ], 'more_info' => 'Más información', - 'quickscan_bulk_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo es asignado, no cambiará la ubicación de la persona, activo o ubicación a la que se le asigna.', + 'quickscan_bulk_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría. Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'whoops' => '¡Uy!', 'something_went_wrong' => 'Algo falló en su solicitud.', 'close' => 'Cerrar', 'expires' => 'Vence', - 'map_fields'=> 'Asociar el campo :item_type', + 'map_fields'=> 'Asociar campos para :item_type', 'remaining_var' => ':count restantes', ]; diff --git a/resources/lang/es-VE/help.php b/resources/lang/es-VE/help.php index e766a4f35..7cbc6acc7 100644 --- a/resources/lang/es-VE/help.php +++ b/resources/lang/es-VE/help.php @@ -15,7 +15,7 @@ return [ 'more_info_title' => 'Más información', - 'audit_help' => 'Al marcar esta casilla se editará el registro de activos para reflejar esta nueva ubicación. Dejarla desmarcada simplemente anotará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo se asigna, no cambiará la ubicación de la persona, el activo o la ubicación a la que se asigna.', + 'audit_help' => 'Al marcar esta casilla se actualizará el activo para reflejar esta nueva ubicación. Dejarla sin marcar, simplemente almacenará la ubicación en el registro de auditoría.

Tenga en cuenta que si este activo ya está asignado, no cambiará la ubicación de la persona, del activo o de la ubicación a la que esté asignado.', 'assets' => 'Los activos son artículos rastreados por número de serie o placa de activo. Suelen ser artículos de alto valor en los que es importante identificar un elemento específico.', diff --git a/resources/lang/es-VE/localizations.php b/resources/lang/es-VE/localizations.php index 88e7bbe1f..9c46fa7a4 100644 --- a/resources/lang/es-VE/localizations.php +++ b/resources/lang/es-VE/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayo', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Noruego', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Noruego Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persa', 'pl-PL'=> 'Polaco', 'pt-PT'=> 'Portugués', diff --git a/resources/lang/es-VE/mail.php b/resources/lang/es-VE/mail.php index 04de723d1..d573a1c28 100644 --- a/resources/lang/es-VE/mail.php +++ b/resources/lang/es-VE/mail.php @@ -46,7 +46,7 @@ return [ 'checked_into' => 'Devuelto en', 'click_on_the_link_accessory' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el accesorio.', 'click_on_the_link_asset' => 'Haga clic en el enlace en la parte inferior para confirmar que ha recibido el activo.', - 'click_to_confirm' => 'Por favor, pulsa en el siguiente enlace para verificar tu cuenta de :web:', + 'click_to_confirm' => 'Por favor, haga clic en el siguiente enlace para confirmar su cuenta de :web:', 'current_QTY' => 'Cantidad actual', 'days' => 'Días', 'expecting_checkin_date' => 'Fecha esperada de devolución:', @@ -58,7 +58,7 @@ return [ 'item' => 'Elemento:', 'item_checked_reminder' => 'Este es un recordatorio de que actualmente tiene :count elemento(s) asignado(s) que no ha aceptado o rechazado. Haga clic en el siguiente enlace para confirmar su decisión.', 'license_expiring_alert' => 'Hay :count licencia que expira en los próximos :threshold días. | Hay :count licencias que expiran en los próximos :threshold días.', - 'link_to_update_password' => 'Haz click en el siguiente link para actualizar la contraseña de tu :web:', + 'link_to_update_password' => 'Por favor, haga clic en el siguiente enlace para actualizar contraseña de :web :', 'login' => 'Iniciar Sesión:', 'login_first_admin' => 'Inicie sesión en su nueva instalación de Snipe-IT usando las credenciales:', 'low_inventory_alert' => 'Hay :count elemento que está por debajo del inventario mínimo o que pronto lo estará.|Hay :count elementos que están por debajo del inventario mínimo o que pronto lo estarán.', @@ -72,7 +72,7 @@ return [ 'read_the_terms_and_click' => 'Por favor lea los términos de uso a continuación y haga clic en el enlace en la parte inferior para confirmar que usted leyó los términos de uso y los acepta, y que ha recibido el activo.', 'requested' => 'Solicitado:', 'reset_link' => 'Su enlace de restablecimiento de contraseña', - 'reset_password' => 'Haz click aquí para reestablecer tu contraseña:', + 'reset_password' => 'Haaga clic aquí para restablecer tu contraseña:', 'rights_reserved' => 'Todos los derechos reservados.', 'serial' => 'Número de serie', 'snipe_webhook_test' => 'Prueba de integración de Snipe-IT', @@ -82,7 +82,7 @@ return [ 'test_email' => 'Email de prueba de Snipe-IT', 'test_mail_text' => 'Esto es una prueba desde el sistema de gestión de activos Snipe-IT. Si recibió este mensaje, el correo está funcionando :)', 'the_following_item' => 'El siguiente artículo ha sido devuelto: ', - 'to_reset' => 'Para restaurar tu contraseña de :web, rellena este formulario:', + 'to_reset' => 'Para restaurar tu contraseña de :web, diligencie este formulario:', 'type' => 'Tipo', 'upcoming-audits' => 'Hay :count para ser auditado antes de :threshold días.|Hay :count activos para ser auditados antes de :threshold días.', 'user' => 'Usuario', diff --git a/resources/lang/es-VE/reminders.php b/resources/lang/es-VE/reminders.php index c4fe99de8..98f281956 100644 --- a/resources/lang/es-VE/reminders.php +++ b/resources/lang/es-VE/reminders.php @@ -14,7 +14,7 @@ return array( */ "password" => "Las contraseñas deben ser de seis caracteres y coincidir con la confirmación.", - "user" => "El nombre de usuario o la dirección de correo son incorrectos", + "user" => "El nombre de usuario o la dirección de correo electrónico son incorrectos", "token" => 'Esta sesión de restablecimiento de contraseña es inválida o ha caducado, o no coincide con el nombre de usuario proporcionado.', 'sent' => 'Si existe un usuario con una dirección de correo electrónico válida en nuestro sistema, se ha enviado un correo electrónico de recuperación de contraseña.', diff --git a/resources/lang/es-VE/validation.php b/resources/lang/es-VE/validation.php index a9a2a95da..225b49a3a 100644 --- a/resources/lang/es-VE/validation.php +++ b/resources/lang/es-VE/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'El campo :attribute debe contener al menos un símbolo.', 'uncompromised' => 'El valor de :attribute ha aparecido en una fuga de datos. Por favor, seleccione un valor diferente para :attribute.', ], + 'percent' => 'El mínimo de amortización debe estar entre 0 y 100 cuando el tipo de amortización es porcentual.', + 'present' => 'El campo :attribute debe tener un valor.', 'present_if' => 'El campo :attribute debe estar presente cuando :other sea :value.', 'present_unless' => 'El campo :attribute debe estar presente a menos que :other sea :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Su contraseña actual es incorrecta', 'dumbpwd' => 'Esa contraseña es muy común.', 'statuslabel_type' => 'Debe seleccionar un tipo de etiqueta de estado válido', + 'custom_field_not_found' => 'Este campo parece que no existe, por favor, compruebe los nombres de sus campos personalizados.', + 'custom_field_not_found_on_model' => 'Este campo parece existir, pero no está disponible en este conjunto de campos para el modelo de activo.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/et-EE/account/general.php b/resources/lang/et-EE/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/et-EE/account/general.php +++ b/resources/lang/et-EE/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/et-EE/admin/locations/message.php b/resources/lang/et-EE/admin/locations/message.php index 57349a4eb..f81846037 100644 --- a/resources/lang/et-EE/admin/locations/message.php +++ b/resources/lang/et-EE/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Asukohta ei eksisteeri.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Selle asukohaga on seotud vähemalt üks vahend ja seda ei saa kustutada. Palun uuenda oma vahendeid, et need ei kasutaks seda asukohta ning seejärel proovi uuesti. ', 'assoc_child_loc' => 'Sel asukohal on hetkel all-asukohti ja seda ei saa kustutada. Palun uuenda oma asukohti nii, et need ei kasutaks seda asukohta ning seejärel proovi uuesti. ', 'assigned_assets' => 'Määratud Varad', diff --git a/resources/lang/et-EE/admin/settings/general.php b/resources/lang/et-EE/admin/settings/general.php index e575f6a91..9c10bda45 100644 --- a/resources/lang/et-EE/admin/settings/general.php +++ b/resources/lang/et-EE/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT versioon', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/et-EE/admin/settings/message.php b/resources/lang/et-EE/admin/settings/message.php index 30b3f6b19..8bd86575c 100644 --- a/resources/lang/et-EE/admin/settings/message.php +++ b/resources/lang/et-EE/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Puhastamise ajal on tekkinud viga.', 'validation_failed' => 'Teie puhta kinnitus on vale. Palun sisestage kinnituskastes sõna "DELETE".', diff --git a/resources/lang/et-EE/button.php b/resources/lang/et-EE/button.php index 1e30b074e..71b8334f2 100644 --- a/resources/lang/et-EE/button.php +++ b/resources/lang/et-EE/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/et-EE/general.php b/resources/lang/et-EE/general.php index 57404e3be..8e57e3fdc 100644 --- a/resources/lang/et-EE/general.php +++ b/resources/lang/et-EE/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Kulumaterjalid', 'country' => 'Riik', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Loo uus', 'created' => 'Üksus on loodud', 'created_asset' => 'loodud vara', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'See rakendus töötab tootmisrežiimis, kus silumisvõimalused on lubatud. See võib avaldada tundlikke andmeid, kui teie rakendus on välismaailmale juurdepääsetav. Keela debugrežiim, määrates APP_DEBUG väärtuse oma .env failis false.', 'delete' => 'Kustuta', 'delete_confirm' => 'Kas olete kindel, et soovite kustutada :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Kustutatud', 'delete_seats' => 'Kustutatud istmed', 'deletion_failed' => 'Kustutamine ebaõnnestus', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Perenimi Eesnimi algustäht (smith_j@example.com)', 'firstinitial.lastname' => 'Eesnime algustäht Perekonnanimi (j.smith@example.com)', 'firstnamelastinitial' => 'Eesnimi Perekonnanime algustäht (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Eesnimi', 'first_name_format' => 'Eesnimi (jane@example.com)', 'files' => 'Failid', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Kustuta pilt', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Laadi pilt üles', - 'filetypes_accepted_help' => 'Aktsepteeritud failitüüp on :types. Maksimaalne lubatud üleslaaditav suurus on :size.|Aktsepteeritud failitüübid on :types. Maksimaalne lubatud üleslaadimise suurus on :size.', - 'filetypes_size_help' => 'Maksimaalne lubatud üleslaadimise suurus on :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Impordi', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Vabad litsentsid', 'licenses' => 'Litsentsid', 'list_all' => 'Kuva kõik', - 'loading' => 'Laadimine, palun oota...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Selle välja väärtust demoinstallatsioonis ei salvestata.', 'feature_disabled' => 'See funktsioon on demo installimisel keelatud.', 'location' => 'Asukoht', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logi välja', 'lookup_by_tag' => 'Varatüübi järgi otsimine', 'maintenances' => 'Hooldus', - 'manage_api_keys' => 'Halda API võtmeid', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Tootja', 'manufacturers' => 'Tootjad', 'markdown' => 'See väli lubab Githubi maitsestatud markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Vali kõik', 'search' => 'Otsi', 'select_category' => 'Vali kategooria', - 'select_datasource' => 'Vali andmeallikas', + 'select_datasource' => 'Select a data source', 'select_department' => 'Valige osakond', 'select_depreciation' => 'Vali amortisatsioonitüüp', 'select_location' => 'Vali asukoht', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Allkiri', 'skin' => 'Väljanägemine', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMOVERSIOON: Selles installatsioonis mõned funktsioonid ei tööta.', 'site_name' => 'Saidi nimi', 'state' => 'Maakond', 'status_labels' => 'Oleku sildid', + 'status_label' => 'Status Label', 'status' => 'Staatus', 'accept_eula' => 'Lõppkasutaja litsentsilepinguga nõustumine', 'supplier' => 'Tarnija', @@ -339,16 +340,16 @@ return [ 'view_all' => 'kuva kõik', 'hide_deleted' => 'Peida kustutatud', 'email' => 'E-mail', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Kasutusjuhend', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Loo andmebaasi tabelid', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Lõpetatud!', 'bulk_edit_about_to' => 'Oled muutmas järgnevat: ', 'checked_out' => 'Väljastatud', diff --git a/resources/lang/et-EE/localizations.php b/resources/lang/et-EE/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/et-EE/localizations.php +++ b/resources/lang/et-EE/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/et-EE/validation.php b/resources/lang/et-EE/validation.php index fbc2d0f18..2ce7a7c15 100644 --- a/resources/lang/et-EE/validation.php +++ b/resources/lang/et-EE/validation.php @@ -31,7 +31,7 @@ return [ 'numeric' => 'The :attribute field must be between :min and :max.', 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'Atribuudiväljadele peab olema tõene või vale.', + 'boolean' => 'Atribuudiväljadele :attribute peab olema tõene või vale.', 'can' => 'The :attribute field contains an unauthorized value.', 'confirmed' => 'The :attribute field confirmation does not match.', 'contains' => 'The :attribute field is missing a required value.', @@ -51,7 +51,7 @@ return [ 'doesnt_start_with' => 'The :attribute field must not start with one of the following: :values.', 'email' => 'The :attribute field must be a valid email address.', 'ends_with' => 'The :attribute field must end with one of the following: :values.', - 'enum' => 'Valitud atribuut on kehtetu.', + 'enum' => 'Valitud :attrubute on kehtetu.', 'exists' => 'Valitud atribuut on kehtetu.', 'extensions' => 'The :attribute field must have one of the following extensions: :values.', 'file' => 'The :attribute field must be a file.', @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Atribuudiväli peab olema kohal.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Teie praegune parool on vale', 'dumbpwd' => 'See parool on liiga levinud.', 'statuslabel_type' => 'Peate valima kehtiva olekutüübi tüübi', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/fa-IR/account/general.php b/resources/lang/fa-IR/account/general.php index a57e49160..4a0ae07ce 100644 --- a/resources/lang/fa-IR/account/general.php +++ b/resources/lang/fa-IR/account/general.php @@ -14,4 +14,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/fa-IR/admin/locations/message.php b/resources/lang/fa-IR/admin/locations/message.php index f24c8ade4..2e46a23d8 100644 --- a/resources/lang/fa-IR/admin/locations/message.php +++ b/resources/lang/fa-IR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'مکان وجود ندارد.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'این مکان در حال حاضر همراه با حداقل یک دارایی است و قادر به حذف نمی شود. لطفا بروز دارایی های خود را به دیگر این مکان مرجع و دوباره امتحان کنید. ', 'assoc_child_loc' => 'این مکان در حال حاضر پدر و مادر کودک حداقل یک مکان است و قادر به حذف نمی شود. لطفا به روز رسانی مکان خود را به دیگر این مکان مرجع و دوباره امتحان کنید. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/fa-IR/admin/settings/general.php b/resources/lang/fa-IR/admin/settings/general.php index e5135e391..505abd072 100644 --- a/resources/lang/fa-IR/admin/settings/general.php +++ b/resources/lang/fa-IR/admin/settings/general.php @@ -310,6 +310,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'نسخه Snipe_IT', 'support_footer' => 'پشتیبانی از پیوندهای پاورقی ', diff --git a/resources/lang/fa-IR/admin/settings/message.php b/resources/lang/fa-IR/admin/settings/message.php index 516ad0d4f..629adde77 100644 --- a/resources/lang/fa-IR/admin/settings/message.php +++ b/resources/lang/fa-IR/admin/settings/message.php @@ -16,6 +16,9 @@ return [ 'restore_confirm' => 'آیا مطمئن هستید که می خواهید پایگاه داده خود را از :filename بازیابی کنید؟ ' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'در حین پاکسازی خطایی رخ داد. ', 'validation_failed' => 'تایید پاکسازی ناصحیح است. لطفا کلمه ی "حذف" را در جعبه ی تاییدیه تایپ کنید.', diff --git a/resources/lang/fa-IR/button.php b/resources/lang/fa-IR/button.php index 9f04e27eb..c88af6522 100644 --- a/resources/lang/fa-IR/button.php +++ b/resources/lang/fa-IR/button.php @@ -27,7 +27,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/fa-IR/general.php b/resources/lang/fa-IR/general.php index 534f957d5..b7aff76b7 100644 --- a/resources/lang/fa-IR/general.php +++ b/resources/lang/fa-IR/general.php @@ -80,7 +80,7 @@ return [ 'consumables' => 'اقلام قابل مصرف', 'country' => 'كشور', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'ایجاد مورد جدید', 'created' => 'مورد ایجاد شده', 'created_asset' => 'دارایی ایجاد شده', @@ -104,7 +104,7 @@ return [ 'debug_warning_text' => 'این برنامه در حالت تولید با استفاده از اشکال زدایی فعال است. این می تواند اطلاعات حساس را در صورت درخواست شما برای جهان خارج در دسترس قرار دهد. با تنظیم مقداری APP_DEBUG در .env فایل خود را به false غیرفعال کنید.', 'delete' => 'حذف', 'delete_confirm' => 'آیا اطمینان دارید که می خواهید این را حذف نمایید؟', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'حذف شد', 'delete_seats' => 'صندلی ها حذف شده ', @@ -145,7 +145,7 @@ return [ 'lastname_firstinitial' => 'فامیل نام میانه (smith_j@example.com)', 'firstinitial.lastname' => 'نام میانه فامیل (j.smith@example.com)', 'firstnamelastinitial' => 'نام فامیل میانه (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'نام', 'first_name_format' => 'نام (jane@example.com)', 'files' => 'فایل ها', @@ -168,11 +168,9 @@ return [ 'include_deleted' => 'دارایی های بایگانی شده را حذف کنید ', 'image_upload' => 'آپلود تصویر', - 'filetypes_accepted_help' => 'نوع فایل پذیرفته شده :types است. حداکثر اندازه مجاز آپلود :size است.|نوع فایل های پذیرفته شده عبارتند از :types. حداکثر اندازه مجاز بارگذاری: اندازه است. -', - 'filetypes_size_help' => 'حداکثر اندازه مجاز بارگذاری: اندازه است. -', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'واردات', 'import_this_file' => 'Map fields and process this file', @@ -199,7 +197,7 @@ return [ 'licenses' => 'گواهی نامه ها', 'list_all' => 'فهرست همه ', - 'loading' => 'در حال بارگذاری لطفا صبر کنید..', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'این مقدار فیلد در یک نصب آزمایشی ذخیره نخواهد شد. ', 'feature_disabled' => 'این ویژگی برای نصب نسخه ی نمایشی غیر فعال شده است.', @@ -211,7 +209,7 @@ return [ 'lookup_by_tag' => 'نگاهی به Asset Tag', 'maintenances' => 'تعمیر و نگهداری ', - 'manage_api_keys' => 'کلیدهای API را مدیریت کنید', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'سازنده', 'manufacturers' => 'تولیدکننده‌ها', 'markdown' => 'این فیلد اجازه می دهد تا گیت هاب به سلیقه خود نشانه گذاری کند . markdown.', @@ -279,7 +277,7 @@ return [ 'select_all' => 'انتخاب همه', 'search' => 'جستوجو', 'select_category' => 'یک دسته را انتخاب کنید', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'یک گروه را انتخاب کنید', 'select_depreciation' => 'انتخاب یک نوع استهلاک', 'select_location' => 'انتخاب یک مکان', @@ -301,11 +299,12 @@ return [ ', 'skin' => 'پوسته', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'MODE DEMO: برخی از ویژگی ها برای این نصب غیر فعال هستند.', 'site_name' => 'نام سایت', 'state' => 'وضعیت', 'status_labels' => 'برچسب های وضعیت', + 'status_label' => 'Status Label', 'status' => 'وضعیت', 'accept_eula' => 'توافق نامه پذیرش ', @@ -376,9 +375,8 @@ return [ 'hide_deleted' => 'پنهان کردن حذف شده ', 'email' => 'ایمیل', - 'do_not_change' => 'تغییر ندهید -', - 'bug_report' => 'گزارش یک اشکال', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'دفترچه راهنمای کاربر ', 'setup_step_1' => 'مرحله 1', @@ -387,9 +385,8 @@ return [ 'setup_step_4' => 'مرحله 4', 'setup_config_check' => 'بررسی پیکربندی ', - 'setup_create_database' => 'ایجاد جدول های پایگاه داده', - 'setup_create_admin' => 'ایجاد کاربر ادمین -', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'تمام شده! ', 'bulk_edit_about_to' => 'شما در حال ویرایش موارد زیر هستید: diff --git a/resources/lang/fa-IR/localizations.php b/resources/lang/fa-IR/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/fa-IR/localizations.php +++ b/resources/lang/fa-IR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/fa-IR/validation.php b/resources/lang/fa-IR/validation.php index a96aa8a82..c0fcdf51f 100644 --- a/resources/lang/fa-IR/validation.php +++ b/resources/lang/fa-IR/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'فیلد attribute باید باشد.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'رمز عبور فعلی شما اشتباه است', 'dumbpwd' => 'این رمز عبور خیلی رایج است', 'statuslabel_type' => 'شما باید نوع برچسب معتبر را انتخاب کنید', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/fi-FI/account/general.php b/resources/lang/fi-FI/account/general.php index dcc522482..e7f7f4cbc 100644 --- a/resources/lang/fi-FI/account/general.php +++ b/resources/lang/fi-FI/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/fi-FI/admin/locations/message.php b/resources/lang/fi-FI/admin/locations/message.php index 0f1c4fa5e..94b503b61 100644 --- a/resources/lang/fi-FI/admin/locations/message.php +++ b/resources/lang/fi-FI/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Sijaintia ei löydy.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Sijaintiin on tällä hetkellä liitettynä vähintään yksi laite, eikä sitä voi poistaa. Poista viittaus sijantiin ja yritä uudelleen. ', 'assoc_child_loc' => 'Tämä sijainti on ylempi toiselle sijainnille eikä sitä voi poistaa. Päivitä sijainnit, jotta et enää viitata tähän sijaintiin ja yritä uudelleen. ', 'assigned_assets' => 'Luovutetut laitteet', diff --git a/resources/lang/fi-FI/admin/settings/general.php b/resources/lang/fi-FI/admin/settings/general.php index 8e3efa7c4..b73e19c1c 100644 --- a/resources/lang/fi-FI/admin/settings/general.php +++ b/resources/lang/fi-FI/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integraatio on valinnainen, mutta päätepiste ja kanava vaaditaan, jos haluat käyttää sitä. Määrittääksesi :app integraation, sinun täytyy ensin luoda saapuva webhook :app tilillesi. Klikkaa Testaa :app Integration -painiketta varmistaaksesi, että asetuksesi ovat oikein ennen tallentamista. ', 'webhook_integration_help_button' => 'Kun olet tallentanut :app tietosi, ilmestyy testipainike.', 'webhook_test_help' => 'Testaa, onko sovelluksen :app integraatio määritetty oikein. SINUN TULEE TALLENTAA PÄIVÄNÄ :app ASETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT versio', 'support_footer' => 'Tuki-alatunnisteen linkit ', 'support_footer_help' => 'Määrittele, kuka voi nähdä linkit Snipe-IT tukipalvelun tietoihin ja käyttöohjeeseen', diff --git a/resources/lang/fi-FI/admin/settings/message.php b/resources/lang/fi-FI/admin/settings/message.php index fc1b14fbf..14be57fb1 100644 --- a/resources/lang/fi-FI/admin/settings/message.php +++ b/resources/lang/fi-FI/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Kyllä, palauttaa sen. Ymmärrän, että tämä korvaa kaikki olemassa olevat tiedot tietokannassa. Tämä myös kirjautuu ulos kaikista nykyisistä käyttäjistä (mukaan lukien sinä).', 'restore_confirm' => 'Oletko varma, että haluat palauttaa tietokannan :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Virhe on ilmennyt puhdistuksen aikana.', 'validation_failed' => 'Puhdistusvahvistus on virheellinen. Kirjoita vahvistusruutuun sana "DELETE".', diff --git a/resources/lang/fi-FI/button.php b/resources/lang/fi-FI/button.php index 016372c75..84c6037d4 100644 --- a/resources/lang/fi-FI/button.php +++ b/resources/lang/fi-FI/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/fi-FI/general.php b/resources/lang/fi-FI/general.php index a4430fc91..ab4f12cfa 100644 --- a/resources/lang/fi-FI/general.php +++ b/resources/lang/fi-FI/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Kulutustarvikkeet', 'country' => 'Maa', 'could_not_restore' => 'Virhe palautettaessa :item_type: :error', - 'not_deleted' => 'Tyyppiä :item_type ei poisteta, joten sitä ei voi palauttaa', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Luo uusi', 'created' => 'Nimike luotiin', 'created_asset' => 'laite luotu', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Sovellus on käynnissä tuotantotilassa, jossa virheenkorjaus on käytössä. Tämä voi paljastaa arkaluonteisia tietoja, jos sovellus avoinna internettiin. Poista virheenkorjaus käytöstä asettamalla APP_DEBUG -arvoksi false .env -tiedostoosi.', 'delete' => 'Poista', 'delete_confirm' => 'Oletko varma että haluat poistaa :item?', - 'delete_confirm_no_undo' => 'Oletko varma, että haluat poistaa :item? Toimintoa ei voi perua.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Poistettu', 'delete_seats' => 'Poistettu käytöstä', 'deletion_failed' => 'Poisto epäonnistui', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Sukunimi _ etunimen ensimmäinen kirjain (virtanen_p@example.com)', 'firstinitial.lastname' => 'Etunimen ensimmäinen kirjain . sukunimi (p.virtanen@example.com)', 'firstnamelastinitial' => 'Etunimi Sukunimen ensimmäinen kirjain (paiviv@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Etunimi', 'first_name_format' => 'Etunimi (jane@example.com)', 'files' => 'Tiedostot', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Poista kuva', 'include_deleted' => 'Sisällytä poistetut laitteet', 'image_upload' => 'Lähetä kuva', - 'filetypes_accepted_help' => 'Hyväksytty tiedostotyyppi on :types. Suurin sallittu tiedostokoko on :size. Hyväksytyt tiedostotyypit ovat :types. Suurin sallittu tiedostokoko on :size.', - 'filetypes_size_help' => 'Suurin sallittu tiedostokoko on :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Kuvatiedostoa ei voitu lukea. Hyväksytyt tiedostotyypit ovat jpg, webp, png, gif ja svg. Tämän tiedoston mimetype on: :mimetype.', 'import' => 'Tuo tiedot', 'import_this_file' => 'Kartta kentät ja käsitellä tätä tiedostoa', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Lisenssit saatavilla', 'licenses' => 'Lisenssit', 'list_all' => 'Listaa kaikki', - 'loading' => 'Ladataan... ole hyvä ja odota....', + 'loading' => 'Ladataan... ole hyvä ja odota...', 'lock_passwords' => 'Tätä kentän arvoa ei tallenneta demo-asennuksessa.', 'feature_disabled' => 'Tämä ominaisuus on poistettu käytöstä demo-asennusta varten.', 'location' => 'Sijainti', @@ -193,7 +193,7 @@ return [ 'logout' => 'Kirjaudu Ulos', 'lookup_by_tag' => 'Hae laitetunnisteella', 'maintenances' => 'Huollot', - 'manage_api_keys' => 'Hallitse API-avaimia', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Valmistaja', 'manufacturers' => 'Valmistajat', 'markdown' => 'Tässä kentässä voi käyttää Github-merkintöjä.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Valitse kaikki', 'search' => 'Etsi', 'select_category' => 'Valitse kategoria', - 'select_datasource' => 'Valitse tietotausta', + 'select_datasource' => 'Select a data source', 'select_department' => 'Valitse osasto', 'select_depreciation' => 'Valitse poistoluokka', 'select_location' => 'Valitse sijainti', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Luovuttanut', 'skin' => 'Ulkoasu', 'webhook_msg_note' => 'Ilmoitus lähetetään webhookin kautta', - 'webhook_test_msg' => 'Jestas! Näyttää siltä, että :app integraatio Snipe-ITn kanssa toimii!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO-TILA: Jotkin ominaisuudet eivät ole käytössä tässä asennuksessa.', 'site_name' => 'Sivuston nimi', 'state' => 'Maakunta', 'status_labels' => 'Tilamerkinnät', + 'status_label' => 'Status Label', 'status' => 'Tila', 'accept_eula' => 'Käyttöoikeussopimus', 'supplier' => 'Toimittaja', @@ -339,16 +340,16 @@ return [ 'view_all' => 'näytä kaikki', 'hide_deleted' => 'Piilota Poistetut', 'email' => 'Sähköposti', - 'do_not_change' => 'Älä Muuta', - 'bug_report' => 'Ilmoita bugista', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Käyttöohje', 'setup_step_1' => 'Vaihe 1', 'setup_step_2' => 'Vaihe 2', 'setup_step_3' => 'Vaihe 3', 'setup_step_4' => 'Vaihe 4', 'setup_config_check' => 'Konfiguraation Tarkistus', - 'setup_create_database' => 'Luo Tietokantatauluja', - 'setup_create_admin' => 'Luo Ylläpitäjä', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Valmis!', 'bulk_edit_about_to' => 'Olet muokkaamassa seuraavaa: ', 'checked_out' => 'Luovutettu', diff --git a/resources/lang/fi-FI/localizations.php b/resources/lang/fi-FI/localizations.php index 0e79f02ef..16b0fda35 100644 --- a/resources/lang/fi-FI/localizations.php +++ b/resources/lang/fi-FI/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaiji', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolia', - 'no-NO'=> 'Norja', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persia', 'pl-PL'=> 'Puola', 'pt-PT'=> 'Portugali', diff --git a/resources/lang/fi-FI/validation.php b/resources/lang/fi-FI/validation.php index f349234a6..be67a23f0 100644 --- a/resources/lang/fi-FI/validation.php +++ b/resources/lang/fi-FI/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':attribute kentän on oltava määritettynä.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Nykyinen salasanasi on virheellinen', 'dumbpwd' => 'Salasana on liian yleinen.', 'statuslabel_type' => 'Sinun on valittava kelvollinen tilamerkintätyyppi', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/fil-PH/account/general.php b/resources/lang/fil-PH/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/fil-PH/account/general.php +++ b/resources/lang/fil-PH/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/fil-PH/admin/locations/message.php b/resources/lang/fil-PH/admin/locations/message.php index 0613d4089..9d5c7a6d7 100644 --- a/resources/lang/fil-PH/admin/locations/message.php +++ b/resources/lang/fil-PH/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Ang lokasyon ay hindi umiiral.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Ang lokasyong ito ay kasalukuyang naiugnay sa hindi bumaba sa isang asset at hindi maaaring mai-delete. Mangyaring i-update ang iyong mga asset upang hindi na magreperens sa lokasyong ito at paki-subok muli. ', 'assoc_child_loc' => 'Ang lokasyong ito ay kasalukuyang pinagmumulan sa hindi bumaba sa lokasyon isang bata at hindi maaaring mai-delete. Mangyaring i-update ang iyong mga lokasyon upang hindi na magreperens sa lokasyong ito at paki-subok muli. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/fil-PH/admin/settings/general.php b/resources/lang/fil-PH/admin/settings/general.php index 649a9803c..33b04ef0b 100644 --- a/resources/lang/fil-PH/admin/settings/general.php +++ b/resources/lang/fil-PH/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Ang bersyon ng Snipe-IT', 'support_footer' => 'Sumusuporta ng mga Link ng Footer ', 'support_footer_help' => 'I-specify kung sino ang nakakakita ng mga link sa impormasyon ng Snipe-IT Support at ang mga User Manual', diff --git a/resources/lang/fil-PH/admin/settings/message.php b/resources/lang/fil-PH/admin/settings/message.php index 8e7fb2afa..54bfe07a0 100644 --- a/resources/lang/fil-PH/admin/settings/message.php +++ b/resources/lang/fil-PH/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Ang error ay nagyari habang nag-purge. ', 'validation_failed' => 'Ang iyong kompermasyon sa purge ay hindi tama. Mangyaring i-type ang salitang "DELETE" sa confirmation box.', diff --git a/resources/lang/fil-PH/button.php b/resources/lang/fil-PH/button.php index d780f6b15..c8a7c814e 100644 --- a/resources/lang/fil-PH/button.php +++ b/resources/lang/fil-PH/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/fil-PH/general.php b/resources/lang/fil-PH/general.php index bdc2426c1..ddd9a192a 100644 --- a/resources/lang/fil-PH/general.php +++ b/resources/lang/fil-PH/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Mga pwedeng ikonsumo', 'country' => 'Ang Bansa', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Magsagawa ng Bago', 'created' => 'Ang Naisagawang Aytem', 'created_asset' => 'ang naisagawang asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ang applilasyon na ito ay tumatakbo sa produksyon na may pagpapagana sa pag-debug. ito ay ma-expose sa sensitibong datus kapag ang iyong aplikasyon ay madaling ma-akses sa labas ng mundo. Huwag paganahin ang debug mode sa pamamagitan pag-set sa APP_DEBUG balyu ng iyong .env file sa false.', 'delete' => 'I-delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Nai-delete na', 'delete_seats' => 'Ang Nai-delete na mga Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ang Unang Pangalan', 'first_name_format' => 'Ang Unang Pangalan (jane@example.com)', 'files' => 'Ang mga file', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'I-delete ang Imahe', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'I-upload ang Imahe', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'I-import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Ang mga lisensya', 'list_all' => 'Ilista ang Lahat', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Ang katangiang ito ay hindi na pinagana sa demo ng pag-install.', 'location' => 'Ang Lokasyon', @@ -193,7 +193,7 @@ return [ 'logout' => 'Mag-logout', 'lookup_by_tag' => 'Maghanap sa pamamagitan ng Asset Tag', 'maintenances' => 'Ang mga Pagpapanatili', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Ang Tagapagsagawa', 'manufacturers' => 'Ang mga Tagapagsagawa', 'markdown' => 'Ang field na ito ay nagpapahintulot sa iyo na Github flavored na markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Maghanap', 'select_category' => 'Pumili ng Kategorya', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Pumili ng Departamento', 'select_depreciation' => 'Pumili ng Tipo ng Depresasyon', 'select_location' => 'Pumili ng Lokasyon', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Ang iilang mga katangian ay na-disable para sa pag-install na ito.', 'site_name' => 'Ang Pangalan ng Site', 'state' => 'Ang Estado', 'status_labels' => 'Ang mga Label ng Katayuan', + 'status_label' => 'Status Label', 'status' => 'Ang Katayuan', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Ang Tagapagsuplay', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Ang Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Nai-check Out', diff --git a/resources/lang/fil-PH/localizations.php b/resources/lang/fil-PH/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/fil-PH/localizations.php +++ b/resources/lang/fil-PH/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/fil-PH/validation.php b/resources/lang/fil-PH/validation.php index c437b67ad..658392760 100644 --- a/resources/lang/fil-PH/validation.php +++ b/resources/lang/fil-PH/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Ang :field ng katangian ay dapat na naroroon.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Ang iyong kasalukuyang password ay hindi wasto', 'dumbpwd' => 'Ang password ay sobrang pangkaraniwan.', 'statuslabel_type' => 'Kinakailangang pumili ng balidong uri ng label ng estado', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/fr-FR/account/general.php b/resources/lang/fr-FR/account/general.php index d69e94b6b..a76650150 100644 --- a/resources/lang/fr-FR/account/general.php +++ b/resources/lang/fr-FR/account/general.php @@ -2,14 +2,16 @@ return array( 'personal_api_keys' => 'Clés personnelles d\'API', - 'personal_access_token' => 'Personal Access Token', - 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', - 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', + 'personal_access_token' => 'Jeton d\'accès personnel', + 'personal_api_keys_success' => 'Clé d\'API personnelle :key créée avec succès', + 'here_is_api_key' => 'Voici votre nouveau jeton d\'accès personnel. C\'est la seule fois qu\'il sera affiché, ne le perdez donc pas ! Vous pouvez maintenant utiliser ce jeton pour faire des requêtes d\'API.', 'api_key_warning' => 'Lorsque vous générez un jeton d\'API, veillez à le copier immédiatement, car vous ne pourrez plus le voir à nouveau.', 'api_base_url' => 'L\'URL de base de l\'API est situé à:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Les jetons d\'API sont configurés pour expirer après:', 'api_reference' => 'Veuillez consulter la documentation de référence des API pour trouver des endpoints spécifiques et de la documentation d\'API supplémentaires.', 'profile_updated' => 'Compte mis à jour avec succès', - 'no_tokens' => 'You have not created any personal access tokens.', + 'no_tokens' => 'Vous n\'avez pas encore créé de jeton d\'accès personnel.', + 'enable_sounds' => 'Activer les effets sonores', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/fr-FR/admin/accessories/message.php b/resources/lang/fr-FR/admin/accessories/message.php index be5f1a294..b5cc40bc2 100644 --- a/resources/lang/fr-FR/admin/accessories/message.php +++ b/resources/lang/fr-FR/admin/accessories/message.php @@ -28,7 +28,7 @@ return array( 'unavailable' => 'L\'accessoire n\'est pas disponible à l\'affectation. Vérifiez la quantité disponible', 'user_does_not_exist' => 'Cet utilisateur est inexistant. Veuillez réessayer.', 'checkout_qty' => array( - 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + 'lte' => 'Il n\'y a actuellement qu\'un seul accessoire de ce type disponible, et vous essayez d\'en attribuer :checkout_qty. Veuillez ajuster la quantité attribuée ou le stock total de cet accessoire et réessayer.|Il n\'y a actuellement que :number_currently_remaining accessoire(s) disponible(s) de ce type, et vous essayez d\'en attribuer :checkout_qty. Veuillez ajuster la quantité attribuée ou le stock total de cet accessoire et réessayer.', ), ), diff --git a/resources/lang/fr-FR/admin/consumables/general.php b/resources/lang/fr-FR/admin/consumables/general.php index e96d8dbf1..bb909f9d6 100644 --- a/resources/lang/fr-FR/admin/consumables/general.php +++ b/resources/lang/fr-FR/admin/consumables/general.php @@ -8,5 +8,5 @@ return array( 'remaining' => 'Restant', 'total' => 'Total', 'update' => 'Mettre à jour le consommable', - 'inventory_warning' => 'The inventory of this consumable is below the minimum amount of :min_count', + 'inventory_warning' => 'La quantité de ce consommable est inférieure à la quantité minimum de :min_count', ); diff --git a/resources/lang/fr-FR/admin/consumables/message.php b/resources/lang/fr-FR/admin/consumables/message.php index a13504d47..7e39d72e7 100644 --- a/resources/lang/fr-FR/admin/consumables/message.php +++ b/resources/lang/fr-FR/admin/consumables/message.php @@ -2,7 +2,7 @@ return array( - 'invalid_category_type' => 'The category must be a consumable category.', + 'invalid_category_type' => 'La catégorie doit être une catégorie de consommables.', 'does_not_exist' => 'Ce consommable n\'existe pas.', 'create' => array( diff --git a/resources/lang/fr-FR/admin/custom_fields/message.php b/resources/lang/fr-FR/admin/custom_fields/message.php index ea724a487..05752bad4 100644 --- a/resources/lang/fr-FR/admin/custom_fields/message.php +++ b/resources/lang/fr-FR/admin/custom_fields/message.php @@ -5,7 +5,7 @@ return array( 'field' => array( 'invalid' => 'Ce champ n\'existe pas.', 'already_added' => 'Le champ a déjà été ajouté', - 'none_selected' => 'No field selected', + 'none_selected' => 'Aucun champ sélectionné', 'create' => array( 'error' => 'Le champ n\'a pas été créé, veuillez réessayer.', diff --git a/resources/lang/fr-FR/admin/hardware/form.php b/resources/lang/fr-FR/admin/hardware/form.php index 60ace4346..4cfabe55d 100644 --- a/resources/lang/fr-FR/admin/hardware/form.php +++ b/resources/lang/fr-FR/admin/hardware/form.php @@ -41,7 +41,7 @@ return [ 'requestable' => 'Les utilisateurs·trices peuvent demander cet actif', 'redirect_to_all' => 'Retourner à tous les :type', 'redirect_to_type' => 'Aller à :type', - 'redirect_to_checked_out_to' => 'Go to Checked Out to', + 'redirect_to_checked_out_to' => 'Aller aux attributions', 'select_statustype' => 'Choisissez le type de statut', 'serial' => 'Série ', 'status' => 'Statut', diff --git a/resources/lang/fr-FR/admin/hardware/message.php b/resources/lang/fr-FR/admin/hardware/message.php index 5df8d2627..c71f75f6a 100644 --- a/resources/lang/fr-FR/admin/hardware/message.php +++ b/resources/lang/fr-FR/admin/hardware/message.php @@ -2,7 +2,7 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. If this status has changed, please update the asset status.', + 'undeployable' => 'Attention : Cet actif est marqué comme indéployable. Si ce statut a changé, merci de mettre à jour le statut d\'actif.', 'does_not_exist' => 'Ce bien n\'existe pas.', 'does_not_exist_var'=> 'Actif avec le tag :asset_tag introuvable.', 'no_tag' => 'Aucune étiquette d\'actif fournie.', @@ -51,7 +51,7 @@ return [ ], 'import' => [ - 'import_button' => 'Process Import', + 'import_button' => 'Effectuer l\'importation', 'error' => 'Certains éléments n\'ont pas été correctement importés.', 'errorDetail' => 'Les éléments suivants n\'ont pas été importés à cause d\'erreurs.', 'success' => 'Votre fichier a bien été importé', diff --git a/resources/lang/fr-FR/admin/licenses/general.php b/resources/lang/fr-FR/admin/licenses/general.php index d73c7fc4c..7330f25f4 100644 --- a/resources/lang/fr-FR/admin/licenses/general.php +++ b/resources/lang/fr-FR/admin/licenses/general.php @@ -14,7 +14,7 @@ return array( 'info' => 'Informations de licence', 'license_seats' => 'Licence multipostes', 'seat' => 'Poste', - 'seat_count' => 'Seat :count', + 'seat_count' => 'Poste :count', 'seats' => 'Postes', 'software_licenses' => 'Licences de logiciel', 'user' => 'Utilisateur', @@ -24,12 +24,12 @@ return array( [ 'checkin_all' => [ 'button' => 'Désattribuer tous les sièges', - 'modal' => 'This action will checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.', + 'modal' => 'Cette action désattribuera un poste. | Cette action désattribuera les :checkedout_seats_count postes pour cette licence.', 'enabled_tooltip' => 'Désassocier TOUS les sièges de cette licence, à la fois des utilisateurs·trices et des actifs', 'disabled_tooltip' => 'Ceci est désactivé car il n\'y a pas de siège actuellement associé', 'disabled_tooltip_reassignable' => 'Ceci est désactivé car la licence n\'est pas réassignable', 'success' => 'Licence désassociée avec succès ! | Toutes les licences ont été désassociées avec succès !', - 'log_msg' => 'Checked in via bulk license checkin in license GUI', + 'log_msg' => 'Associée via l\'interface d\'attribution de licence en volumes', ], 'checkout_all' => [ diff --git a/resources/lang/fr-FR/admin/licenses/message.php b/resources/lang/fr-FR/admin/licenses/message.php index 90679e4b7..1c9677051 100644 --- a/resources/lang/fr-FR/admin/licenses/message.php +++ b/resources/lang/fr-FR/admin/licenses/message.php @@ -44,8 +44,8 @@ return array( 'error' => 'Un problème a eu lieu pendant l\'association de la licence. Veuillez essayer à nouveau.', 'success' => 'La licence a été associée avec succès', 'not_enough_seats' => 'Pas assez de sièges de licence disponibles pour le paiement', - 'mismatch' => 'The license seat provided does not match the license', - 'unavailable' => 'This seat is not available for checkout.', + 'mismatch' => 'Le poste de licence fourni ne correspond pas à la licence', + 'unavailable' => 'Ce poste n\'est pas disponible pour attribution.', ), 'checkin' => array( diff --git a/resources/lang/fr-FR/admin/locations/message.php b/resources/lang/fr-FR/admin/locations/message.php index d4dbfeea5..6e2ed8273 100644 --- a/resources/lang/fr-FR/admin/locations/message.php +++ b/resources/lang/fr-FR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Le lieu n\'existe pas.', - 'assoc_users' => 'Cet emplacement n\'est pas actuellement supprimable car il s\'agit de l\'emplacement de l\'enregistrement pour au moins un actif ou un utilisateur, a des actifs qui lui sont assignés, ou est l\'emplacement parent d\'un autre emplacement. Veuillez mettre à jour vos modèles pour ne plus référencer cette entreprise et réessayez. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Cet emplacement est actuellement associé à au moins un actif et ne peut pas être supprimé. Veuillez mettre à jour vos actifs pour ne plus faire référence à cet emplacement et réessayez. ', 'assoc_child_loc' => 'Cet emplacement est actuellement le parent d\'au moins un sous emplacement et ne peut pas être supprimé . S\'il vous plaît mettre à jour vos emplacement pour ne plus le référencer et réessayez. ', 'assigned_assets' => 'Actifs assignés', diff --git a/resources/lang/fr-FR/admin/models/message.php b/resources/lang/fr-FR/admin/models/message.php index fded8a8e6..9121af7b5 100644 --- a/resources/lang/fr-FR/admin/models/message.php +++ b/resources/lang/fr-FR/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'ATTENTION ! Le modèle d\'actif pour cet objet est invalide ou manquant !', 'no_association_fix' => 'Cela va casser les choses de manière bizarre et horrible. Modifiez cette ressource maintenant pour lui assigner un modèle.', 'assoc_users' => 'Ce modèle est actuellement associé à au moins un actif et ne peut pas être supprimé. Veuillez supprimer les actifs associés et essayer à nouveau. ', - 'invalid_category_type' => 'The category must be an asset category.', + 'invalid_category_type' => 'La catégorie doit être une catégorie d\'actifs.', 'create' => array( 'error' => 'Le modèle n\'a pas été créé, veuillez essayer à nouveau.', diff --git a/resources/lang/fr-FR/admin/settings/general.php b/resources/lang/fr-FR/admin/settings/general.php index e35cf9fe4..3b3d6df42 100644 --- a/resources/lang/fr-FR/admin/settings/general.php +++ b/resources/lang/fr-FR/admin/settings/general.php @@ -49,7 +49,7 @@ return [ 'default_eula_text' => 'Licence d\'utilisation par défaut', 'default_language' => 'Langue par défaut', 'default_eula_help_text' => 'Vous pouvez également associer les licences d\'utilisations personnalisés à des catégories spécifiques d\'actifs .', - 'acceptance_note' => 'Add a note for your decision (Optional)', + 'acceptance_note' => 'Ajouter une note pour votre décision (facultatif)', 'display_asset_name' => 'Afficher le nom des actifs', 'display_checkout_date' => 'Afficher la date d\'association', 'display_eol' => 'Afficher la fin de vie dans les tables', @@ -94,7 +94,7 @@ return [ 'ldap_login_sync_help' => 'Ceci vérifie uniquement que LDAP se synchronise correctement. Si votre requête d\'authentification LDAP est incorrecte, les utilisateurs peuvent ne pas pouvoir se connecter. VOUS DEVEZ D\'ABORD ENREGISTRER VOS PARAMÈTRES LDAP MIS À JOUR.', 'ldap_manager' => 'Gestionnaire LDAP', 'ldap_server' => 'Serveur LDAP', - 'ldap_server_help' => 'This should start with ldap:// (for unencrypted) or ldaps:// (for TLS or SSL)', + 'ldap_server_help' => 'Devrait commencer par ldap:// (non-chiffré) ou ldaps:// (pour SSL/TLS)', 'ldap_server_cert' => 'Validation du certificat SSL LDAP', 'ldap_server_cert_ignore' => 'Autorise un certificat SSL invalide', 'ldap_server_cert_help' => 'Sélectionnez cette case à cocher si vous utilisez un certificat SSL auto-signé et voudriez accepter un certificat SSL invalide.', @@ -122,8 +122,8 @@ return [ 'ldap_test' => 'Tester LDAP', 'ldap_test_sync' => 'Tester la synchronisation LDAP', 'license' => 'Licence de logiciel', - 'load_remote' => 'Load Remote Avatars', - 'load_remote_help_text' => 'Uncheck this box if your install cannot load scripts from the outside internet. This will prevent Snipe-IT from trying load avatars from Gravatar or other outside sources.', + 'load_remote' => 'Charger les avatars distants', + 'load_remote_help_text' => 'Décochez cette case si votre installation ne peut pas charger de scripts depuis internet. Cela empêchera Snipe-IT de tenter de charger les avatars depuis Gravatar ou toute autre source externe.', 'login' => 'Tentatives de connexion', 'login_attempt' => 'Tentative de connexion', 'login_ip' => 'Adresse IP', @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':L\'intégration de :app est optionnelle, cependant le point de terminaison et le canal sont requis si vous souhaitez l\'utiliser. Pour configurer l\'intégration de :app, vous devez d\'abord créer un webhook entrant sur votre compte :app. Cliquez sur le bouton Tester l\'intégration :app pour confirmer que vos paramètres sont corrects avant d\'enregistrer. ', 'webhook_integration_help_button' => 'Une fois que vous aurez enregistré vos informations :app, un bouton de test apparaîtra.', 'webhook_test_help' => 'Testez si votre intégration :app est correctement configurée. VOUS DEVEZ D\'ABORD ENREGISTRER LES PARAMÈTRES MIS À JOUR DE :app.', + 'shortcuts_enabled' => 'Activer les raccourcis', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Version de Snipe-IT', 'support_footer' => 'Support des liens de pied de page ', 'support_footer_help' => 'Spécifiez qui voit les liens vers les manuels de support utilisateur Snipe-IT', @@ -287,18 +289,18 @@ return [ 'zerofill_count' => 'Longueur des étiquettes de bien, incluant le remplissage de zéros', 'username_format_help' => 'Ce paramètre ne sera utilisé par le processus d\'importation que si un nom d\'utilisateur n\'est pas fourni et que nous devons générer un nom d\'utilisateur pour vous.', 'oauth_title' => 'Paramètres de l\'API OAuth', - 'oauth_clients' => 'OAuth Clients', + 'oauth_clients' => 'Clients OAuth', 'oauth' => 'OAuth', 'oauth_help' => 'Paramètres du point de terminaison Oauth', - 'oauth_no_clients' => 'You have not created any OAuth clients yet.', + 'oauth_no_clients' => 'Vous n\'avez pas encore créé de client OAuth.', 'oauth_secret' => 'Secret', - 'oauth_authorized_apps' => 'Authorized Applications', - 'oauth_redirect_url' => 'Redirect URL', + 'oauth_authorized_apps' => 'Applications autorisées', + 'oauth_redirect_url' => 'URL de redirection', 'oauth_name_help' => ' Quelque chose que vos utilisateurs reconnaîtront et en quoi ils auront confiance.', 'oauth_scopes' => 'Scopes', - 'oauth_callback_url' => 'Your application authorization callback URL.', - 'create_client' => 'Create Client', - 'no_scopes' => 'No scopes', + 'oauth_callback_url' => 'URL de retour d\'autorisation de votre application.', + 'create_client' => 'Créer un client', + 'no_scopes' => 'Aucun scope', 'asset_tag_title' => 'Mettre à jour les paramètres de numéro d\'inventaire', 'barcode_title' => 'Gérer les paramètres des codes-barres', 'barcodes' => 'Codes-barres', @@ -375,9 +377,9 @@ return [ 'timezone' => 'Fuseau horaire', 'profile_edit' => 'Modifier le profil', 'profile_edit_help' => 'Permettre aux utilisateurs de modifier leur propre profil.', - 'default_avatar' => 'Upload custom default avatar', - 'default_avatar_help' => 'This image will be displayed as a profile if a user does not have a profile photo.', - 'restore_default_avatar' => 'Restore original system default avatar', + 'default_avatar' => 'Téléverser un avatar par défaut personnalisé', + 'default_avatar_help' => 'Cette image sera utilisée pour le profil des utilisateurs·trices qui n\'ont pas de photo de profil.', + 'restore_default_avatar' => 'Rétablir l\'avatar par défaut d\'origine', 'restore_default_avatar_help' => '', ]; diff --git a/resources/lang/fr-FR/admin/settings/message.php b/resources/lang/fr-FR/admin/settings/message.php index 84f4d8834..6f0ed0a7d 100644 --- a/resources/lang/fr-FR/admin/settings/message.php +++ b/resources/lang/fr-FR/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Oui, restaurez-le. Je reconnais que cela écrasera toutes les données existantes actuellement dans la base de données. Cela déconnectera également tous vos utilisateurs existants (vous y compris).', 'restore_confirm' => 'Êtes-vous sûr de vouloir restaurer votre base de données à partir de :filename ?' ], + 'restore' => [ + 'success' => 'Votre sauvegarde système a été restaurée. Veuillez vous reconnecter.' + ], 'purge' => [ 'error' => 'Une erreur est survenue durant la purge. ', 'validation_failed' => 'Votre confirmation de purge est incorrecte. Merci d\'écrire le mot "DELETE" dans la fenêtre de confirmation.', diff --git a/resources/lang/fr-FR/button.php b/resources/lang/fr-FR/button.php index 06e9a36e3..5baf04098 100644 --- a/resources/lang/fr-FR/button.php +++ b/resources/lang/fr-FR/button.php @@ -7,7 +7,7 @@ return [ 'checkin_and_delete' => 'Tout dissocier / Supprimer l\'utilisateur', 'delete' => 'Supprimer', 'edit' => 'Éditer', - 'clone' => 'Clone', + 'clone' => 'Dupliquer', 'restore' => 'Restaurer', 'remove' => 'Supprimer', 'request' => 'Demander', @@ -23,12 +23,12 @@ return [ 'append' => 'Ajouter', 'new' => 'Nouveau', 'var' => [ - 'clone' => 'Clone :item_type', - 'edit' => 'Edit :item_type', - 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', - 'create' => 'Create New :item_type', - 'checkout' => 'Checkout :item_type', - 'checkin' => 'Checkin :item_type', + 'clone' => 'Dupliquer :item_type', + 'edit' => 'Éditer :item_type', + 'delete' => 'Supprimer :item_type', + 'restore' => 'Restaurer :item_type', + 'create' => 'Créer nouveau :item_type', + 'checkout' => 'Attribuer :item_type', + 'checkin' => 'Désattribuer :item_type', ] ]; diff --git a/resources/lang/fr-FR/general.php b/resources/lang/fr-FR/general.php index e431878a3..e4e8f1a3c 100644 --- a/resources/lang/fr-FR/general.php +++ b/resources/lang/fr-FR/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consommables', 'country' => 'Pays', 'could_not_restore' => 'Erreur lors de la restauration de :item_type: :error', - 'not_deleted' => 'Le :item_type n\'est pas supprimé et ne peut donc pas être restauré', + 'not_deleted' => 'Cet :item_type n\'est pas supprimé et ne peut donc pas être restauré', 'create' => 'Créer', 'created' => 'Élément créé', 'created_asset' => 'Actif créé', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Nom de famille et première lettre du prénom (smith_j@example.com)', 'firstinitial.lastname' => 'Première lettre du prénom et nom de famille (j.smith@example.com)', 'firstnamelastinitial' => 'Prénom (janes@example.com)', - 'lastnamefirstname' => 'Nom Prénom (smith.jane@example.com)', + 'lastnamefirstname' => 'Nom.Prénom (smith.jane@example.com)', 'first_name' => 'Prénom', 'first_name_format' => 'Prénom (jane@example.com)', 'files' => 'Fichiers', @@ -157,7 +157,7 @@ return [ 'include_deleted' => 'Inclure les matériels supprimés', 'image_upload' => 'Charger une image', 'filetypes_accepted_help' => 'Le type de fichier accepté est :types. La taille maximale autorisée est :size.|Les types de fichiers acceptés sont :types. La taille maximale autorisée est :size.', - 'filetypes_size_help' => 'La taille maximale autorisée des téléversements est :size.', + 'filetypes_size_help' => 'La taille maximale de téléversement autorisée est :size.', 'image_filetypes_help' => 'Les types de fichiers acceptés sont jpg, webp, png, gif, svg et avif. La taille maximale de téléchargement autorisée est :size.', 'unaccepted_image_type' => 'Ce fichier image n\'est pas lisible. Les types de fichiers acceptés sont jpg, webp, png, gif et svg. Le type mimetype de ce fichier est : :mimetype.', 'import' => 'Importer', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licences disponibles', 'licenses' => 'Licences', 'list_all' => 'Lister tout', - 'loading' => 'Chargement en cours... Veuillez patienter...', + 'loading' => 'Chargement en cours... Merci de patienter...', 'lock_passwords' => 'Ce champ ne sera pas sauvegardé dans une installation de démonstration.', 'feature_disabled' => 'Cette fonctionnalité a été désactivée pour l\'installation de démonstration.', 'location' => 'Lieu', @@ -206,7 +206,7 @@ return [ 'new_password' => 'Nouveau mot de passe', 'next' => 'Prochain', 'next_audit_date' => 'Prochaine date de vérification', - 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', + 'next_audit_date_help' => 'Si vous utilisez l\'audit dans votre organisation, ceci est généralement calculé automatiquement en fonction de la dernière date d\'audit et de la dernière fréquence d\'audit de l\'actif (dans Paramètres > Alertes) et vous pouvez laisser ce champ vide. Vous pouvez définir manuellement cette date ici si vous en avez besoin, mais elle doit être postérieure à la dernière date d\'audit. ', 'audit_images_help' => 'Vous pouvez trouver des images d\'audit dans l\'onglet historique de l\'actif.', 'no_email' => 'Aucune adresse e-mail associée à cet utilisateur', 'last_audit' => 'Dernier audit', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Tout sélectionner', 'search' => 'Rechercher', 'select_category' => 'Choisir une catégorie', - 'select_datasource' => 'Sélectionnez une source de données', + 'select_datasource' => 'Sélectionner une source de données', 'select_department' => 'Sélectionnez un département', 'select_depreciation' => 'Choisissez un type d\'amortissement', 'select_location' => 'Choisissez un emplacement', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Déconnecté par', 'skin' => 'Habillage', 'webhook_msg_note' => 'Une notification sera envoyée via le webhook', - 'webhook_test_msg' => 'Woohoo ! Il semble que votre intégration :app vers Snipe-IT fonctionne !', + 'webhook_test_msg' => 'Woohoo ! Il semble que votre intégration de :app vers Snipe-IT fonctionne !', 'some_features_disabled' => 'MODE DEMO: Certaines fonctionnalités sont désactivées pour cette installation.', 'site_name' => 'Nom du Site', 'state' => 'État', 'status_labels' => 'Étiquette de statut', + 'status_label' => 'Status Label', 'status' => 'Statut', 'accept_eula' => 'Contrat de licence', 'supplier' => 'Fournisseur', @@ -348,7 +349,7 @@ return [ 'setup_step_4' => 'Étape 4', 'setup_config_check' => 'Vérification de la configuration', 'setup_create_database' => 'Créer les tables de la base de données', - 'setup_create_admin' => 'Créer un utilisateur administrateur', + 'setup_create_admin' => 'Créer un administrateur', 'setup_done' => 'Terminé !', 'bulk_edit_about_to' => 'Vous êtes sur le point de modifier les éléments suivants : ', 'checked_out' => 'Affecté', @@ -528,7 +529,7 @@ return [ 'permission_denied_superuser_demo' => 'Autorisation refusée. Vous ne pouvez pas mettre à jour les informations de l\'utilisateur pour les super-admins sur la démo.', 'pwd_reset_not_sent' => 'L\'utilisateur n\'est pas activé, est synchronisé avec LDAP ou n\'a pas d\'adresse e-mail', 'error_sending_email' => 'Erreur lors de l\'envoi de l\'e-mail', - 'sad_panda' => 'Sad panda. You are not authorized to do the thing. Maybe return to the dashboard, or contact your administrator.', + 'sad_panda' => 'Panda triste. Vous n\'êtes pas autorisé à faire ceci. Vous pouvez retourner au tableau de bord ou contacter votre administrateur.', 'bulk' => [ 'delete' => [ @@ -552,11 +553,11 @@ return [ ], 'more_info' => 'Plus d\'info', 'quickscan_bulk_help' => 'Si vous cochez cette case, l\'enregistrement de l\'actif sera modifié pour refléter ce nouvel emplacement. Si elle n\'est pas cochée, l\'emplacement sera simplement noté dans le journal d\'audit. Notez que si ce bien est sorti, il ne changera pas l\'emplacement de la personne, du bien ou de l\'emplacement auquel il est sorti.', - 'whoops' => 'Whoops!', - 'something_went_wrong' => 'Something went wrong with your request.', - 'close' => 'Close', + 'whoops' => 'Oups !', + 'something_went_wrong' => 'Un problème est survenu lors du traitement de votre requête.', + 'close' => 'Fermer', 'expires' => 'Expire le', 'map_fields'=> 'Map :item_type Field', - 'remaining_var' => ':count Remaining', + 'remaining_var' => ':count restant', ]; diff --git a/resources/lang/fr-FR/localizations.php b/resources/lang/fr-FR/localizations.php index 03f030a6e..1f5f0e27f 100644 --- a/resources/lang/fr-FR/localizations.php +++ b/resources/lang/fr-FR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malais', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Norvégien', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norvégien (Bokmål)', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Perse', 'pl-PL'=> 'Polonais', 'pt-PT'=> 'Portugais', diff --git a/resources/lang/fr-FR/mail.php b/resources/lang/fr-FR/mail.php index 94d5d23e2..90e839e21 100644 --- a/resources/lang/fr-FR/mail.php +++ b/resources/lang/fr-FR/mail.php @@ -56,7 +56,7 @@ return [ 'i_have_read' => 'J\'ai bien lu et approuvé les conditions d\'utilisation, et reçu cet objet.', 'inventory_report' => 'Rapport d\'inventaire', 'item' => 'Article :', - 'item_checked_reminder' => 'This is a reminder that you currently have :count items checked out to you that you have not accepted or declined. Please click the link below to confirm your decision.', + 'item_checked_reminder' => 'Ceci est un rappel que vous avez actuellement :count articles que vous n\'avez pas acceptés ou refusés. Veuillez cliquer sur le lien ci-dessous pour confirmer votre décision.', 'license_expiring_alert' => 'Il y a :count licence expirant dans les prochains :threshold jours.|Il y a :count licences expirant dans les prochains :threshold jours.', 'link_to_update_password' => 'Veuillez cliquer sur le lien suivant pour confirmer votre :web account:', 'login' => 'Nom d\'utilisateur:', @@ -87,10 +87,10 @@ return [ 'upcoming-audits' => 'Il y a :count matériel à venir pour un audit dans les :threshold jours.|Il y a :count matériels à venir pour un audit dans les :threshold jours.', 'user' => 'Utilisateur', 'username' => 'Nom d\'utilisateur', - 'unaccepted_asset_reminder' => 'You have Unaccepted Assets.', + 'unaccepted_asset_reminder' => 'Vous avez des actifs non acceptés.', 'welcome' => 'Bienvenue, :name', 'welcome_to' => 'Bienvenue sur :web!', 'your_assets' => 'Voir vos matériels', 'your_credentials' => 'Vos identifiants Snipe-IT', - 'mail_sent' => 'Mail sent successfully!', + 'mail_sent' => 'Email envoyé avec succès !', ]; diff --git a/resources/lang/fr-FR/validation.php b/resources/lang/fr-FR/validation.php index 717c2356f..c7bfca0ae 100644 --- a/resources/lang/fr-FR/validation.php +++ b/resources/lang/fr-FR/validation.php @@ -13,32 +13,32 @@ return [ | */ - 'accepted' => 'The :attribute field must be accepted.', - 'accepted_if' => 'The :attribute field must be accepted when :other is :value.', - 'active_url' => 'The :attribute field must be a valid URL.', - 'after' => 'The :attribute field must be a date after :date.', - 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', - 'alpha' => 'The :attribute field must only contain letters.', - 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', - 'alpha_num' => 'The :attribute field must only contain letters and numbers.', - 'array' => 'The :attribute field must be an array.', - 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', - 'before' => 'The :attribute field must be a date before :date.', - 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'accepted' => 'Le champ :attribute doit être accepté.', + 'accepted_if' => 'Le champ :attribute doit être accepté quand :other vaut :value.', + 'active_url' => 'Le champ :attribute doit être une URL valide.', + 'after' => 'Le champ :attribute doit être une date postérieure au :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.', + 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', + 'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, chiffres, tirets haut et bas.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des lettres et des chiffres.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'ascii' => 'Le champ :attribute doit contenir uniquement des caractères ASCII.', + 'before' => 'Le champ :attribute doit être une date antérieure au :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.', 'between' => [ - 'array' => 'The :attribute field must have between :min and :max items.', - 'file' => 'The :attribute field must be between :min and :max kilobytes.', - 'numeric' => 'The :attribute field must be between :min and :max.', - 'string' => 'The :attribute field must be between :min and :max characters.', + 'array' => 'Le champ :attribute doit contenir entre :min et :max objets.', + 'file' => 'Le champ :attribute doit avoir une taille comprise entre :min et :max kilooctets.', + 'numeric' => 'Le champ :attribute doit être compris entre :min et :max.', + 'string' => 'Le champ :attribute doit contenir entre :min et :max caractères.', ], - 'boolean' => 'The :attribute field must be true or false.', - 'can' => 'The :attribute field contains an unauthorized value.', - 'confirmed' => 'The :attribute field confirmation does not match.', - 'contains' => 'The :attribute field is missing a required value.', - 'current_password' => 'The password is incorrect.', - 'date' => 'The :attribute field must be a valid date.', - 'date_equals' => 'The :attribute field must be a date equal to :date.', - 'date_format' => 'The :attribute field must match the format :format.', + 'boolean' => 'Le champ :attribute doit être vrai ou faux.', + 'can' => 'Le champ :attribute contient une valeur non autorisée.', + 'confirmed' => 'La confirmation du champ :attribute ne correspond pas.', + 'contains' => 'Le champ :attribute manque d\'une valeur obligatoire.', + 'current_password' => 'Le mot de passe est incorrect.', + 'date' => 'Le champ :attribute doit être une date valide.', + 'date_equals' => 'Le champ :attribute doit être une date égale au :date.', + 'date_format' => 'Le champ :attribute doit correspondre au format :format.', 'decimal' => 'The :attribute field must have :decimal decimal places.', 'declined' => 'The :attribute field must be declined.', 'declined_if' => 'The :attribute field must be declined when :other is :value.', @@ -117,14 +117,16 @@ return [ 'multiple_of' => 'The :attribute field must be a multiple of :value.', 'not_in' => 'L\'attribut ":attribute" est invalide.', 'not_regex' => 'The :attribute field format is invalid.', - 'numeric' => 'The :attribute field must be a number.', + 'numeric' => 'Le champ :attribute doit être un nombre.', 'password' => [ - 'letters' => 'The :attribute field must contain at least one letter.', + 'letters' => 'Le champ :attribute doit contenir au moins une lettre.', 'mixed' => 'The :attribute field must contain at least one uppercase and one lowercase letter.', 'numbers' => 'The :attribute field must contain at least one number.', 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Le champ d\'attribut: doit être présent.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Votre mot de passe actuel est incorrect', 'dumbpwd' => 'Ce mot de passe est trop commun.', 'statuslabel_type' => 'Vous devez sélectionner un type d\'étiquette de statut valide', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP @@ -225,8 +229,8 @@ return [ 'generic' => [ 'invalid_value_in_field' => 'Valeur non valide incluse dans ce champ', - 'required' => 'This field is required', - 'email' => 'Please enter a valid email address', + 'required' => 'Ce champ est obligatoire', + 'email' => 'Veuillez entrer une adresse e-mail valide', ], diff --git a/resources/lang/ga-IE/account/general.php b/resources/lang/ga-IE/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ga-IE/account/general.php +++ b/resources/lang/ga-IE/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ga-IE/admin/locations/message.php b/resources/lang/ga-IE/admin/locations/message.php index 8aeaec86c..f0bf04eac 100644 --- a/resources/lang/ga-IE/admin/locations/message.php +++ b/resources/lang/ga-IE/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Níl an suíomh ann.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Tá an suíomh seo bainteach le sócmhainn amháin ar a laghad agus ní féidir é a scriosadh. Déan do sócmhainní a thabhairt cothrom le dáta gan tagairt a dhéanamh don áit seo agus déan iarracht arís.', 'assoc_child_loc' => 'Faoi láthair tá an suíomh seo ina tuismitheoir ar a laghad ar shuíomh leanbh amháin ar a laghad agus ní féidir é a scriosadh. Nuashonraigh do láithreacha le do thoil gan tagairt a dhéanamh don suíomh seo agus déan iarracht arís.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ga-IE/admin/settings/general.php b/resources/lang/ga-IE/admin/settings/general.php index 649c9b17a..ccad78e0a 100644 --- a/resources/lang/ga-IE/admin/settings/general.php +++ b/resources/lang/ga-IE/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT leagan', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/ga-IE/admin/settings/message.php b/resources/lang/ga-IE/admin/settings/message.php index b610938e2..2fd8a2ad7 100644 --- a/resources/lang/ga-IE/admin/settings/message.php +++ b/resources/lang/ga-IE/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Tharla earráid agus í ag puráil.', 'validation_failed' => 'Tá do dheimhniú purge mícheart. Scríobh an focal "DELETE" sa bhosca daingnithe.', diff --git a/resources/lang/ga-IE/button.php b/resources/lang/ga-IE/button.php index 0f5c327e7..b8c4d81d7 100644 --- a/resources/lang/ga-IE/button.php +++ b/resources/lang/ga-IE/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ga-IE/general.php b/resources/lang/ga-IE/general.php index b83be5445..ebd8c3a71 100644 --- a/resources/lang/ga-IE/general.php +++ b/resources/lang/ga-IE/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Tomhaltáin', 'country' => 'Tír', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Cruthaigh Nua', 'created' => 'Mír Cruthaithe', 'created_asset' => 'cruthaíodh sócmhainn', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Tá an t-iarratas seo á reáchtáil i mód táirgthe le cumas dífhabhtaithe. Féadfaidh sé seo sonraí íogaire a nochtadh má tá do iarratas inrochtana don domhan lasmuigh. Díchumasaigh an modh dífhabhtaithe trí luachanna APP_DEBUG a leagan amach i do chomhad .env chuig false.', 'delete' => 'Scrios', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Scriosta', 'delete_seats' => 'Suíocháin Scriosta', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ainm', 'first_name_format' => 'Céadainm (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Scrios Íomhá', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Íomhá Uaslódáil', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Iompórtáil', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Ceadúnais', 'list_all' => 'Liosta Gach', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Tá an ghné seo faoi mhíchumas chun an suiteáil taispeántais.', 'location' => 'Suíomh', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logáil Amach', 'lookup_by_tag' => 'Féach ar Chlib Sócmhainní', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Déantóir', 'manufacturers' => 'Déantóirí', 'markdown' => 'Ceadaíonn an réimse seo Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Cuardaigh', 'select_category' => 'Roghnaigh Catagóir', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Roghnaigh Roinn', 'select_depreciation' => 'Roghnaigh Cineál Dímheasa', 'select_location' => 'Roghnaigh Suíomh', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'MODH DEMO: Tá gnéithe áirithe faoi mhíchumas don shuiteáil seo agus athshocróidh na sonraí sa chóras seo go laethúil.', 'site_name' => 'Ainm an tSuímh', 'state' => 'Stáit', 'status_labels' => 'Lipéid Stádas', + 'status_label' => 'Status Label', 'status' => 'Stádas', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Soláthraí', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Ríomhphost', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Seiceáil Amach', diff --git a/resources/lang/ga-IE/localizations.php b/resources/lang/ga-IE/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/ga-IE/localizations.php +++ b/resources/lang/ga-IE/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ga-IE/validation.php b/resources/lang/ga-IE/validation.php index 31d867e81..cd1a893d1 100644 --- a/resources/lang/ga-IE/validation.php +++ b/resources/lang/ga-IE/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Ní mór an réimse tréith a bheith i láthair.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Tá do phasfhocal reatha mícheart', 'dumbpwd' => 'Tá an focal faire sin ró-choitianta.', 'statuslabel_type' => 'Ní mór duit cineál lipéad stádas bailí a roghnú', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/he-IL/account/general.php b/resources/lang/he-IL/account/general.php index 2df779062..a8078fa0f 100644 --- a/resources/lang/he-IL/account/general.php +++ b/resources/lang/he-IL/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/he-IL/admin/locations/message.php b/resources/lang/he-IL/admin/locations/message.php index 8b5f4a8a1..de920bfd7 100644 --- a/resources/lang/he-IL/admin/locations/message.php +++ b/resources/lang/he-IL/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'המיקום אינו קיים.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'המיקום משויך לפחות לפריט אחד ולכן לא ניתן למחוק אותו. אנא עדכן את הפריטים כך שלא יהיה אף פריט משויך למיקום זה ונסה שנית. ', 'assoc_child_loc' => 'למיקום זה מוגדרים תתי-מיקומים ולכן לא ניתן למחוק אותו. אנא עדכן את המיקומים כך שלא שמיקום זה לא יכיל תתי מיקומים ונסה שנית. ', 'assigned_assets' => 'פריטים מוקצים', diff --git a/resources/lang/he-IL/admin/settings/general.php b/resources/lang/he-IL/admin/settings/general.php index 1d4d9302c..af8ee5170 100644 --- a/resources/lang/he-IL/admin/settings/general.php +++ b/resources/lang/he-IL/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT גירסה', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/he-IL/admin/settings/message.php b/resources/lang/he-IL/admin/settings/message.php index acc67164a..5790a094d 100644 --- a/resources/lang/he-IL/admin/settings/message.php +++ b/resources/lang/he-IL/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'האם ברצונך לשחזר את המסד נתונים מ: קובץ?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'אירעה שגיאה בעת הטיהור.', 'validation_failed' => 'אישור הטיהור שלך שגוי. הקלד את המילה "DELETE" בתיבת האישור.', diff --git a/resources/lang/he-IL/button.php b/resources/lang/he-IL/button.php index 09ea6d92d..b00941695 100644 --- a/resources/lang/he-IL/button.php +++ b/resources/lang/he-IL/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/he-IL/general.php b/resources/lang/he-IL/general.php index 01434b66d..c0fb7e389 100644 --- a/resources/lang/he-IL/general.php +++ b/resources/lang/he-IL/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'מתכלים', 'country' => 'מדינה', 'could_not_restore' => 'שגיאה בשחזור :item_type: :error', - 'not_deleted' => 'ה:item_type לא נמחק ולכן לא ניתן לשחזרו', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'צור חדש', 'created' => 'פריט נוצר', 'created_asset' => 'הנכס שנוצר', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'יישום זה פועל במצב ייצור עם איתור באגים. זה יכול לחשוף נתונים רגישים אם היישום שלך נגיש לעולם החיצון. השבת את מצב איתור הבאגים על ידי הגדרת הערך APP_DEBUG בקובץ .env ל false.', 'delete' => 'לִמְחוֹק', 'delete_confirm' => 'האם אתה בטוח שברצונך למחוק?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'נמחק', 'delete_seats' => 'מושבים שנמחקו', 'deletion_failed' => 'המחיקה נכשלה', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'שם משפחה ראשי תיבות שם פרטי (smith_j@example.com)', 'firstinitial.lastname' => 'ראשי תיבות שם פרטי שם משפחה (j.smith@example)', 'firstnamelastinitial' => 'שם פרטי ראשי תיבות שם משפחה (janes@example.com)', - 'lastnamefirstname' => 'שם משפחה שם פרטי (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'שם פרטי', 'first_name_format' => 'שם פרטי (jane@example.com)', 'files' => 'קבצים', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'מחק תמונה', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'העלאת תמונה', - 'filetypes_accepted_help' => 'סוגי קובץ אפשריים הם :types. גודל קובץ אפשרי מקסימלי:size.', - 'filetypes_size_help' => 'גודל קובץ מותר הוא :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'יְבוּא', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'רישיונות', 'list_all' => 'רשימת הכל', - 'loading' => 'טעינה... אנא המתן....', + 'loading' => 'טעינה... אנא המתן...', 'lock_passwords' => 'השדה הזה לא ישמר במצב הדגמה.', 'feature_disabled' => 'תכונה זו הושבתה עבור התקנת ההדגמה.', 'location' => 'מקום', @@ -193,7 +193,7 @@ return [ 'logout' => 'להתנתק', 'lookup_by_tag' => 'בדיקה על ידי תג הנכס', 'maintenances' => 'אירועי תחזוקה', - 'manage_api_keys' => 'נהל מפתחות API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'יַצרָן', 'manufacturers' => 'היצרנים', 'markdown' => 'שדה זה מאפשר Github בטעם מרקדון .', @@ -254,7 +254,7 @@ return [ 'select_all' => 'בחר הכל', 'search' => 'חפש', 'select_category' => 'בחר קטגוריה', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'בחר מחלקה', 'select_depreciation' => 'בחר סוג פחת', 'select_location' => 'בחר מיקום', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'אושר על ידי', 'skin' => 'ערכת עיצוב', 'webhook_msg_note' => 'תישלח התראה דרך התליית רשת', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: תכונות מסוימות מושבתות עבור התקנה זו.', 'site_name' => 'שם אתר', 'state' => 'מדינה', 'status_labels' => 'תוויות סטטוס', + 'status_label' => 'Status Label', 'status' => 'סטָטוּס', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'ספק', @@ -339,16 +340,16 @@ return [ 'view_all' => 'הצג הכל', 'hide_deleted' => 'הסתר מחוקים', 'email' => 'דוא"ל', - 'do_not_change' => 'לא לשינוי', - 'bug_report' => 'דווח על באג', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'חוברת משתמש', 'setup_step_1' => 'שלב 1', 'setup_step_2' => 'שלב 2', 'setup_step_3' => 'שלב 3', 'setup_step_4' => 'שלב 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'הסתיים!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'הנכס שוייך', diff --git a/resources/lang/he-IL/localizations.php b/resources/lang/he-IL/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/he-IL/localizations.php +++ b/resources/lang/he-IL/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/he-IL/validation.php b/resources/lang/he-IL/validation.php index bd85d08e6..fce37bdf8 100644 --- a/resources/lang/he-IL/validation.php +++ b/resources/lang/he-IL/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'שדה התכונה: חייב להיות נוכח.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'הסיסמה הנוכחית שלך שגויה', 'dumbpwd' => 'סיסמה זו נפוצה מדי.', 'statuslabel_type' => 'עליך לבחור סוג תווית סטטוס חוקי', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/hr-HR/account/general.php b/resources/lang/hr-HR/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/hr-HR/account/general.php +++ b/resources/lang/hr-HR/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/hr-HR/admin/locations/message.php b/resources/lang/hr-HR/admin/locations/message.php index bf856a0fc..343f16067 100644 --- a/resources/lang/hr-HR/admin/locations/message.php +++ b/resources/lang/hr-HR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokacija ne postoji.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Ta je lokacija trenutačno povezana s barem jednim resursom i ne može se izbrisati. Ažurirajte svoju imovinu da više ne referira na tu lokaciju i pokušajte ponovno.', 'assoc_child_loc' => 'Ta je lokacija trenutačno roditelj najmanje jedne lokacije za djecu i ne može se izbrisati. Ažurirajte svoje lokacije da više ne referiraju ovu lokaciju i pokušajte ponovo.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/hr-HR/admin/settings/general.php b/resources/lang/hr-HR/admin/settings/general.php index d96d3345b..d5cf1a821 100644 --- a/resources/lang/hr-HR/admin/settings/general.php +++ b/resources/lang/hr-HR/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT verzija', 'support_footer' => 'Podrška poveznica u podnožju ', 'support_footer_help' => 'Navedite tko vidi poveznice na informacije o Snipe-IT podršci i korisničkom priručniku', diff --git a/resources/lang/hr-HR/admin/settings/message.php b/resources/lang/hr-HR/admin/settings/message.php index 1ed0dba21..d86142b35 100644 --- a/resources/lang/hr-HR/admin/settings/message.php +++ b/resources/lang/hr-HR/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Došlo je do pogreške prilikom čišćenja.', 'validation_failed' => 'Vaša potvrda o čišćenju nije točna. Upišite riječ "DELETE" u okvir potvrde.', diff --git a/resources/lang/hr-HR/button.php b/resources/lang/hr-HR/button.php index 8be1647d9..521bedbaa 100644 --- a/resources/lang/hr-HR/button.php +++ b/resources/lang/hr-HR/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/hr-HR/general.php b/resources/lang/hr-HR/general.php index 6f94cdc84..965ba9492 100644 --- a/resources/lang/hr-HR/general.php +++ b/resources/lang/hr-HR/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Potrošni', 'country' => 'Zemlja', 'could_not_restore' => 'Greška u obnavljanju :item_type: :error', - 'not_deleted' => ':item_type nije brisan pa ne može biti ni vraćen', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Izradi novu', 'created' => 'Stavka je stvorena', 'created_asset' => 'stvorio imovinu', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ova se aplikacija izvodi u načinu rada s omogućenim uklanjanjem pogrešaka. To može otkriti osjetljive podatke ako je aplikacija dostupna vanjskom svijetu. Onemogućite način otklanjanja pogrešaka postavljanjem vrijednosti APP_DEBUG u .env datoteci na false.', 'delete' => 'Izbrisati', 'delete_confirm' => 'Jeste li sigurni da želite izbrisati :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'izbrisana', 'delete_seats' => 'Izbrisana mjesta', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'Inicijal imena i prezime (i.ivic)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ime', 'first_name_format' => 'Ime (jane@example.com)', 'files' => 'Datoteke', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Izbriši sliku', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Prenesite sliku', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Uvoz', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'licence', 'list_all' => 'Popis svih', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Ova je značajka onemogućena za demo instalaciju.', 'location' => 'Mjesto', @@ -193,7 +193,7 @@ return [ 'logout' => 'Odjaviti se', 'lookup_by_tag' => 'Pretraživanje pomoću oznake imovine', 'maintenances' => 'Održavanje', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Proizvođač', 'manufacturers' => 'Proizvođači', 'markdown' => 'Ovo polje dopušta gordi s okusom "Github ".', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'traži', 'select_category' => 'Izaberi kategoriju', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Odaberite Odjel', 'select_depreciation' => 'Odaberite vrstu amortizacije', 'select_location' => 'Odaberite lokaciju', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Neke su značajke onemogućene za ovu instalaciju.', 'site_name' => 'Ime stranice', 'state' => 'država', 'status_labels' => 'Oznake statusa', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Dobavljač', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'E-mail', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Odjavio', diff --git a/resources/lang/hr-HR/localizations.php b/resources/lang/hr-HR/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/hr-HR/localizations.php +++ b/resources/lang/hr-HR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/hr-HR/validation.php b/resources/lang/hr-HR/validation.php index b1fbd91a3..2a69831ba 100644 --- a/resources/lang/hr-HR/validation.php +++ b/resources/lang/hr-HR/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Polje atributa mora biti prisutno.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Vaša trenutačna zaporka nije točna', 'dumbpwd' => 'Ta je lozinka prečestna.', 'statuslabel_type' => 'Morate odabrati valjanu vrstu oznake statusa', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/hu-HU/account/general.php b/resources/lang/hu-HU/account/general.php index c7bb10c31..0eefc5651 100644 --- a/resources/lang/hu-HU/account/general.php +++ b/resources/lang/hu-HU/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'A fiók frissítése sikeres', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/hu-HU/admin/locations/message.php b/resources/lang/hu-HU/admin/locations/message.php index 7f8c25175..64139cdc8 100644 --- a/resources/lang/hu-HU/admin/locations/message.php +++ b/resources/lang/hu-HU/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Hely nem létezik.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Ez a hely jelenleg legalább egy eszközhöz társítva, és nem törölhető. Frissítse eszközeit, hogy ne hivatkozzon erre a helyre, és próbálja újra.', 'assoc_child_loc' => 'Ez a hely jelenleg legalább egy gyermek helye szülője, és nem törölhető. Frissítse tartózkodási helyeit, hogy ne hivatkozzon erre a helyre, és próbálja újra.', 'assigned_assets' => 'Hozzárendelt eszközök', diff --git a/resources/lang/hu-HU/admin/settings/general.php b/resources/lang/hu-HU/admin/settings/general.php index 8a52b5f2b..060bf42cd 100644 --- a/resources/lang/hu-HU/admin/settings/general.php +++ b/resources/lang/hu-HU/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT változat', 'support_footer' => 'Lábjegyzet linkek támogatása ', 'support_footer_help' => 'Adja meg, hogy ki láthassa a Snipe-IT támogatási információ és a felhasználói kézikönyv linkjeit', diff --git a/resources/lang/hu-HU/admin/settings/message.php b/resources/lang/hu-HU/admin/settings/message.php index c60ffa65b..faceb3d9f 100644 --- a/resources/lang/hu-HU/admin/settings/message.php +++ b/resources/lang/hu-HU/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Igen, állítsa vissza. Tudomásul veszem, hogy ez felülírja az adatbázisban jelenleg meglévő adatokat. Ez egyben az összes meglévő felhasználó (beleértve Önt is) kijelentkezik.', 'restore_confirm' => 'Biztos, hogy vissza szeretné állítani az adatbázisát a :filename -ből?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Hiba történt a tisztítás során.', 'validation_failed' => 'A tisztítás megerősítése helytelen. Kérjük, írja be a "DELETE" szót a megerősítő mezőbe.', diff --git a/resources/lang/hu-HU/button.php b/resources/lang/hu-HU/button.php index 38cf4e902..9aa355e56 100644 --- a/resources/lang/hu-HU/button.php +++ b/resources/lang/hu-HU/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/hu-HU/general.php b/resources/lang/hu-HU/general.php index 498fb4fa4..4210ca431 100644 --- a/resources/lang/hu-HU/general.php +++ b/resources/lang/hu-HU/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Fogyóeszközök', 'country' => 'Ország', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Új létrehozása', 'created' => 'Elem létrehozva', 'created_asset' => 'létrehozott eszköz', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ez az alkalmazás gyártási módban fut, a hibakeresés engedélyezve. Ez érzékeny adatokat tárhat fel, ha az alkalmazás elérhető a külvilág számára. A hibakeresési mód letiltása a APP_DEBUG érték .env fájlban történő false fájlban történő beállításával.', 'delete' => 'Törlés', 'delete_confirm' => 'Biztos benne, hogy törölni akarja: :item?', - 'delete_confirm_no_undo' => 'Biztosan törli ezt : :item? Ez a művelet nem vonható vissza.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Törölve', 'delete_seats' => 'Törölt elemek', 'deletion_failed' => 'A törlés nem sikerült', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Vezetéknév majd keresztnév kezdőbetűje (smith_j@example.com)', 'firstinitial.lastname' => 'Keresztnév kezdőbetűje majd vezetéknév (j.smith@example.com)', 'firstnamelastinitial' => 'Keresztnév majd vezetéknév kezdőbetűje (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Keresztnév', 'first_name_format' => 'Keresztnév (jane@example.com)', 'files' => 'Fájlok', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Kép törlése', 'include_deleted' => 'Törölt eszközök bevonása', 'image_upload' => 'Kép feltöltése', - 'filetypes_accepted_help' => 'Az elfogadott fájltípus :types. A megengedett maximális feltöltési méret :size.|Az elfogadott fájltípusok :types. A megengedett maximális feltöltési méret :size.', - 'filetypes_size_help' => 'A feltölthető méret maximum :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Ez a képfájl nem beolvasható. Az elfogadott fájltípusok: jpg, webp, png, gif és svg. A fájl kódolása: :mimetype.', 'import' => 'Importálás', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Elérhető licenszek', 'licenses' => 'Licencek', 'list_all' => 'Listázd mind', - 'loading' => 'Betöltés, kis türelmet....', + 'loading' => 'Betöltés, kis türelmet...', 'lock_passwords' => 'Ez az érték nem fog elmentődni a demo telepítésekor.', 'feature_disabled' => 'Ez a funkció le van tiltva a demo telepítéshez.', 'location' => 'Helyszín', @@ -193,7 +193,7 @@ return [ 'logout' => 'Kijelentkezés', 'lookup_by_tag' => 'Keresés az Asset Tag segítségével', 'maintenances' => 'Karbantartások', - 'manage_api_keys' => 'API kulcsok kezelése', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Gyártó', 'manufacturers' => 'Gyártók', 'markdown' => 'Ez a mező enged a Github flavored markdown-hoz.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Összes kijelölése', 'search' => 'Keresés', 'select_category' => 'Válasszon egy kategóriát', - 'select_datasource' => 'Válasszon egy adatforrást', + 'select_datasource' => 'Select a data source', 'select_department' => 'Válasszon osztályt', 'select_depreciation' => 'Válasszon ki egy értékcsökkenési típust', 'select_location' => 'Válasszon egy helyet', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Aláírta', 'skin' => 'Kinézet', 'webhook_msg_note' => 'Az értesítések webhookokon keresztül lesznek elküldve', - 'webhook_test_msg' => 'Oh szia! Úgy látszik a te :app integrálásod a Snipe-IT-val sikeres volt!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Néhány funkció le van tiltva a telepítéshez.', 'site_name' => 'Hely neve', 'state' => 'Megye', 'status_labels' => 'Státusz címkék', + 'status_label' => 'Status Label', 'status' => 'Állapot', 'accept_eula' => 'Elfogadási megállapodás', 'supplier' => 'Támogató', @@ -339,16 +340,16 @@ return [ 'view_all' => 'összes megtekintése', 'hide_deleted' => 'Töröltek elrejtése', 'email' => 'E-mail cím', - 'do_not_change' => 'Ne változtasd meg', - 'bug_report' => 'Hiba bejelentése', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Felhasználói kézikönyv', 'setup_step_1' => 'Első lépés', 'setup_step_2' => 'Második lépés', 'setup_step_3' => 'Harmadik lépés', 'setup_step_4' => 'Negyedik lépés', 'setup_config_check' => 'Konfiguráció ellenőrzése', - 'setup_create_database' => 'Adatbázistáblák létrehozása', - 'setup_create_admin' => 'Admin felhasználó elkészítése', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Kész!', 'bulk_edit_about_to' => 'A következőket fogja szerkeszteni: ', 'checked_out' => 'Kiosztva', diff --git a/resources/lang/hu-HU/localizations.php b/resources/lang/hu-HU/localizations.php index e70829c9c..4705cb43d 100644 --- a/resources/lang/hu-HU/localizations.php +++ b/resources/lang/hu-HU/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Maláj', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Norvég', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Perzsa', 'pl-PL'=> 'Lengyel', 'pt-PT'=> 'Portugál', diff --git a/resources/lang/hu-HU/validation.php b/resources/lang/hu-HU/validation.php index a8d2a2c79..043edb955 100644 --- a/resources/lang/hu-HU/validation.php +++ b/resources/lang/hu-HU/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'A: attribútum mezőnek jelen kell lennie.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'A jelenlegi jelszava helytelen', 'dumbpwd' => 'Ez a jelszó túl gyakori.', 'statuslabel_type' => 'Meg kell határoznia egy érvényes állapotcímke típust', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/id-ID/account/general.php b/resources/lang/id-ID/account/general.php index 3dbd1270c..2f04f774b 100644 --- a/resources/lang/id-ID/account/general.php +++ b/resources/lang/id-ID/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/id-ID/admin/locations/message.php b/resources/lang/id-ID/admin/locations/message.php index b9c13093c..6b6d3451b 100644 --- a/resources/lang/id-ID/admin/locations/message.php +++ b/resources/lang/id-ID/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokasi tidak ada.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Lokasi saat ini dikaitkan dengan setidaknya oleh satu aset dan tidak dapat dihapus. Perbarui aset Anda yang tidak ada referensi dari lokasi ini dan coba lagi. ', 'assoc_child_loc' => 'Lokasi saat ini digunakan oleh induk salah satu dari turunan lokasi dan tidak dapat di hapus. Mohon perbarui lokasi Anda ke yang tidak ada referensi dengan lokasi ini dan coba kembali. ', 'assigned_assets' => 'Aset yang Ditetapkan', diff --git a/resources/lang/id-ID/admin/settings/general.php b/resources/lang/id-ID/admin/settings/general.php index 3241a264b..65803b437 100644 --- a/resources/lang/id-ID/admin/settings/general.php +++ b/resources/lang/id-ID/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Versi Snipe-IT', 'support_footer' => 'Mendukung Footer Links ', 'support_footer_help' => 'Tentukan siapa yang melihat tautan ke info Dukungan Snipe-IT dan Panduan Pengguna', diff --git a/resources/lang/id-ID/admin/settings/message.php b/resources/lang/id-ID/admin/settings/message.php index 535cde71c..e2f830edd 100644 --- a/resources/lang/id-ID/admin/settings/message.php +++ b/resources/lang/id-ID/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Terdapat kesalahan ketika proses pembersihan. ', 'validation_failed' => 'Konfirmasi pembersihan anda tidak tepat. Silahkan ketikan kata "DELETE" di kotak konfirmasi.', diff --git a/resources/lang/id-ID/button.php b/resources/lang/id-ID/button.php index 45f9ca696..f1c4a0a04 100644 --- a/resources/lang/id-ID/button.php +++ b/resources/lang/id-ID/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/id-ID/general.php b/resources/lang/id-ID/general.php index 4e284887e..b31d2bbbc 100644 --- a/resources/lang/id-ID/general.php +++ b/resources/lang/id-ID/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Barang Habis Pakai', 'country' => 'Negara', 'could_not_restore' => 'Galat memulihkan :item_type: :error', - 'not_deleted' => ':item_type tidak dihapus, jadi tak dapat dipulihkan', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Buat baru', 'created' => 'Item dibuat', 'created_asset' => 'Buat aset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Aplikasi ini berjalan dalam mode produksi dengan debugging diaktifkan. Hal ini dapat mengekspos data sensitif jika aplikasi Anda dapat diakses oleh dunia luar. Nonaktifkan mode debug dengan menetapkan nilai APP_DEBUG di file .env Anda ke false.', 'delete' => 'Hapus', 'delete_confirm' => 'Apakah Anda yakin untuk menghapus kategori ini?', - 'delete_confirm_no_undo' => 'Anda yakin ingin menghapus :item ini? Penghapusan tidak bisa dibatalkan.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Dihapus', 'delete_seats' => 'Lisensi di hapus', 'deletion_failed' => 'Penghapusan gagal', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Nama Belakang Inisial Depan (smith_j@example.com)', 'firstinitial.lastname' => 'Nama Belakang Inisial Pertama (j.smith@example.com)', 'firstnamelastinitial' => 'Nama Depan Inisial Belakang (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Nama Depan', 'first_name_format' => 'Nama Depan (jane@example.com)', 'files' => 'File', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Menghapus gambar', 'include_deleted' => 'Sertakan Aset yang Dihapus', 'image_upload' => 'Unggah gambar', - 'filetypes_accepted_help' => 'Jenis file yang diterima adalah :types. Ukuran unggahan maksimum yang diizinkan adalah :size.', - 'filetypes_size_help' => 'Ukuran unggahan maksimum yang diizinkan adalah :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Pilihan file gambar ini tidak dapat dibaca. Jenis file yang diterima adalah jpg, webp, png, gif, dan svg. Tipe file ini adalah :mimetype.', 'import' => 'Impor', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Lisensi', 'list_all' => 'Tampilkan semua', - 'loading' => 'Memuat, harap tunggu....', + 'loading' => 'Memuat, harap tunggu...', 'lock_passwords' => 'Nilai bidang ini tidak akan disimpan dalam instalasi demo.', 'feature_disabled' => 'Fitur ini telah dinonaktifkan untuk instalasi demo.', 'location' => 'Lokasi', @@ -193,7 +193,7 @@ return [ 'logout' => 'Keluar', 'lookup_by_tag' => 'Mencari berdasarkan tag aset', 'maintenances' => 'Pemeliharaan', - 'manage_api_keys' => 'Mengelola Kunci API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Produsen', 'manufacturers' => 'Produsen', 'markdown' => 'Field ini mengizinkan Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Pilih Semua', 'search' => 'Cari', 'select_category' => 'Memilih Kategori', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Pilih Departemen', 'select_depreciation' => 'Memilih tipe penyusutan', 'select_location' => 'Memilih lokasi', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Ditandatangani Oleh', 'skin' => 'Tema', 'webhook_msg_note' => 'Pemberitahuan akan dikirim melalui webhook', - 'webhook_test_msg' => 'Oh hai! Sepertinya integrasi :app Anda dengan Snipe-IT berfungsi dengan baik!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO: Beberapa fitur tidak aktif.', 'site_name' => 'Nama Situs', 'state' => 'Provinsi', 'status_labels' => 'Status label', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Perjanjian Penerimaan', 'supplier' => 'Pemasok', @@ -339,16 +340,16 @@ return [ 'view_all' => 'lihat semua', 'hide_deleted' => 'Sembunyikan yang Dihapus', 'email' => 'Email', - 'do_not_change' => 'Jangan Ubah', - 'bug_report' => 'Laporkan Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Panduan Pengguna', 'setup_step_1' => 'Langkah 1', 'setup_step_2' => 'Langkah 2', 'setup_step_3' => 'Langkah 3', 'setup_step_4' => 'Langkah 4', 'setup_config_check' => 'Peninjauan Konfigurasi', - 'setup_create_database' => 'Membuat Tabel Database', - 'setup_create_admin' => 'Buat Pengguna Admin', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Selesai!', 'bulk_edit_about_to' => 'Anda akan mengubah hal berikut ini: ', 'checked_out' => 'Diberikan', diff --git a/resources/lang/id-ID/localizations.php b/resources/lang/id-ID/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/id-ID/localizations.php +++ b/resources/lang/id-ID/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/id-ID/validation.php b/resources/lang/id-ID/validation.php index 7bd5292af..ab3183f3d 100644 --- a/resources/lang/id-ID/validation.php +++ b/resources/lang/id-ID/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Bidang atribut: harus ada.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Kata sandi Anda saat ini salah', 'dumbpwd' => 'Password itu terlalu umum', 'statuslabel_type' => 'Anda harus memilih jenis label status yang valid', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/is-IS/account/general.php b/resources/lang/is-IS/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/is-IS/account/general.php +++ b/resources/lang/is-IS/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/is-IS/admin/locations/message.php b/resources/lang/is-IS/admin/locations/message.php index 20c375904..fce360984 100644 --- a/resources/lang/is-IS/admin/locations/message.php +++ b/resources/lang/is-IS/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Staðsetningin er ekki til.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Skráðar eignir', diff --git a/resources/lang/is-IS/admin/settings/general.php b/resources/lang/is-IS/admin/settings/general.php index d1a6023ff..0a0bd9995 100644 --- a/resources/lang/is-IS/admin/settings/general.php +++ b/resources/lang/is-IS/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/is-IS/admin/settings/message.php b/resources/lang/is-IS/admin/settings/message.php index 931b34371..8f18d4d40 100644 --- a/resources/lang/is-IS/admin/settings/message.php +++ b/resources/lang/is-IS/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/is-IS/button.php b/resources/lang/is-IS/button.php index d8f0b4e03..2593b018e 100644 --- a/resources/lang/is-IS/button.php +++ b/resources/lang/is-IS/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/is-IS/general.php b/resources/lang/is-IS/general.php index f47850a75..908efe9d3 100644 --- a/resources/lang/is-IS/general.php +++ b/resources/lang/is-IS/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Rekstrarvörur', 'country' => 'Land', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Stofna nýtt', 'created' => 'Hlutur stofnaður', 'created_asset' => 'skráði eign', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Eyða', 'delete_confirm' => 'Ertu viss um að þú viljir eyða þessum :item?', - 'delete_confirm_no_undo' => 'Ertu viss um að þú viljir eyða þessum :item? Þessi aðgerð er óafturkræf.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Eytt', 'delete_seats' => 'Eydd leyfi', 'deletion_failed' => 'Eyðing mistókst', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Fornafn', 'first_name_format' => 'Fornafn (jane@example.com)', 'files' => 'Skrár', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Eyða mynd', 'include_deleted' => 'Inniheldur eyddar eignir', 'image_upload' => 'Hlaða upp mynd', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Flytja inn', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Hugbúnaðarleyfi í boði', 'licenses' => 'Leyfi', 'list_all' => 'Sýna allt', - 'loading' => 'Hleð... vinsamlega bíðið....', + 'loading' => 'Hleð... vinsamlega bíðið...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Staðsetning', @@ -193,7 +193,7 @@ return [ 'logout' => 'Útskráning', 'lookup_by_tag' => 'Leita eftir merki eignar', 'maintenances' => 'Viðhald', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Framleiðandi', 'manufacturers' => 'Framleiðendur', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Veldu alla', 'search' => 'Leita', 'select_category' => 'Veldu flokk', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Veldu deild', 'select_depreciation' => 'Veldu afskriftir', 'select_location' => 'Veldu Staðsetningu', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Undirritað af', 'skin' => 'Útlit', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Nafn vefsins', 'state' => 'Ríki', 'status_labels' => 'Stöðu merkingar', + 'status_label' => 'Status Label', 'status' => 'Staða', 'accept_eula' => 'Samþykkja skilyrði', 'supplier' => 'Framleiðandi', @@ -339,16 +340,16 @@ return [ 'view_all' => 'Skoða allt', 'hide_deleted' => 'Hide Deleted', 'email' => 'Tölvupóstur', - 'do_not_change' => 'EKKI BREYTA', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Skráð út', diff --git a/resources/lang/is-IS/localizations.php b/resources/lang/is-IS/localizations.php index aa6176add..fd2d8233f 100644 --- a/resources/lang/is-IS/localizations.php +++ b/resources/lang/is-IS/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/is-IS/validation.php b/resources/lang/is-IS/validation.php index 7ef26d728..74df5d1dc 100644 --- a/resources/lang/is-IS/validation.php +++ b/resources/lang/is-IS/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'Þetta lykilorð er of algengt.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/it-IT/account/general.php b/resources/lang/it-IT/account/general.php index 0082f2a9e..c49a4b5e5 100644 --- a/resources/lang/it-IT/account/general.php +++ b/resources/lang/it-IT/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Controlla la Guida di Riferimento delle API per trovare specifici endpoint API e documentazione aggiuntiva.', 'profile_updated' => 'Account aggiornato con successo', 'no_tokens' => 'Non hai creato nessun token di accesso personale.', + 'enable_sounds' => 'Attiva gli effetti sonori', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/it-IT/admin/locations/message.php b/resources/lang/it-IT/admin/locations/message.php index 1ddfc0381..b12790879 100644 --- a/resources/lang/it-IT/admin/locations/message.php +++ b/resources/lang/it-IT/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'La posizione non esiste.', - 'assoc_users' => 'Non puoi cancellare questa posizione perché è la posizione di almeno un bene o un utente, ha dei beni assegnati, o è la posizione principale di un\'altra posizione. Aggiornare i modelli per non fare più riferimento a questa azienda e riprovare. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Questa posizione è associata ad almeno un prodotto e non può essere cancellata. Si prega di aggiornare i vostri prodotti di riferimento e riprovare. ', 'assoc_child_loc' => 'Questa posizione è parente di almeno un\'altra posizione e non può essere cancellata. Si prega di aggiornare le vostre posizioni di riferimento e riprovare. ', 'assigned_assets' => 'Beni Assegnati', diff --git a/resources/lang/it-IT/admin/settings/general.php b/resources/lang/it-IT/admin/settings/general.php index de6ee08ee..7293b88dd 100644 --- a/resources/lang/it-IT/admin/settings/general.php +++ b/resources/lang/it-IT/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'L\'integrazione con :app è facoltativa, ma se si desidera utilizzarla bisogna specificare l\'endpoint e il canale. Per configurare l\'integrazione devi creare un webhook in arrivo sul tuo account :app . Clicca su Prova integrazione :app per confermare che le impostazioni siano corrette prima di salvare. ', 'webhook_integration_help_button' => 'Una volta salvate le informazioni di :app, apparirà un pulsante di prova.', 'webhook_test_help' => 'Verifica se l\'integrazione :app è configurata correttamente. DEVI PRIMA SALVARE LE IMPOSTAZIONI :app AGGIORNATE.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Supporto per i collegamenti a piè di pagina ', 'support_footer_help' => 'Specificare chi vede i collegamenti alle informazioni sul supporto IT e su Snipe-IT', diff --git a/resources/lang/it-IT/admin/settings/message.php b/resources/lang/it-IT/admin/settings/message.php index 49dffc56f..110bb626b 100644 --- a/resources/lang/it-IT/admin/settings/message.php +++ b/resources/lang/it-IT/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Si, ripristina. Riconosco che il ripristino sovrascriverà tutti i dati al momento presenti nel database. Inoltre, tutti gli utenti verranno disconnessi (incluso te).', 'restore_confirm' => 'Sei sicuro di voler ripristinare il tuo database da :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Si è verificato un errore durante la pulizia. ', 'validation_failed' => 'La conferma dell\'eliminazione non è corretta. Digita "DELETE" nel box di conferma.', diff --git a/resources/lang/it-IT/button.php b/resources/lang/it-IT/button.php index d32b7647d..e2c400b10 100644 --- a/resources/lang/it-IT/button.php +++ b/resources/lang/it-IT/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/it-IT/general.php b/resources/lang/it-IT/general.php index 7e788cf20..466d310ef 100644 --- a/resources/lang/it-IT/general.php +++ b/resources/lang/it-IT/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumabili', 'country' => 'Paese', 'could_not_restore' => 'Errore nel ripristino di :item_type: :error', - 'not_deleted' => 'Il :item_type non può essere ripristinato perché non è stato cancellato', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Crea', 'created' => 'Articolo creato', 'created_asset' => 'bene creato', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Questa applicazione è in esecuzione in modalità di produzione con il debug abilitato. Questo può esporre dati sensibili se l\'applicazione è accessibile al mondo esterno. Disabilitare la modalità di debug impostando il valore APP_DEBUG nel file .env su false.', 'delete' => 'Elimina', 'delete_confirm' => 'Sei sicuro di voler eliminare :item?', - 'delete_confirm_no_undo' => 'Sei sicuro di voler cancellare :item? Questa azione non può essere annullata.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Eliminata', 'delete_seats' => 'Posti Cancellati', 'deletion_failed' => 'Eliminazione fallita', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Cognome_ Iniziale Nome (smith_j@example.com)', 'firstinitial.lastname' => 'Iniziale Nome . Cognome (j.smith@example.com)', 'firstnamelastinitial' => 'Nome + Iniziale Cognome (janes@example.com)', - 'lastnamefirstname' => 'Cognome Nome (smith.jane@esempio.it)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Nome', 'first_name_format' => 'Nome (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Cancella l\'Immagine', 'include_deleted' => 'Includi i Beni Eliminati', 'image_upload' => 'Carica immagine', - 'filetypes_accepted_help' => 'Tipo di file accettato :types. Dimensione massima di caricamento :size.|Tipi di file accettati :types. Dimensione massima di caricamento :size.', - 'filetypes_size_help' => 'Dimensione massima di caricamento :size.', - 'image_filetypes_help' => 'I tipi di file accettati sono jpg, webp, png, gif, svg e avif. La dimensione massima consentita è :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Questo immagine non è leggibile. I tipi di file accettati sono jpg, webp, png, gif e svg. Il tipo di questo file è :mimetype.', 'import' => 'Importa', 'import_this_file' => 'Mappa i campi ed elabora questo file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenze disponibili', 'licenses' => 'Licenze', 'list_all' => 'Visualizza Tutti', - 'loading' => 'Caricamento... attendere prego....', + 'loading' => 'Caricamento... attendere prego...', 'lock_passwords' => 'Questo valore non verrà salvato in un\'installazione demo.', 'feature_disabled' => 'Questa funzionalità è stata disabilitata per l\'installazione demo.', 'location' => 'Luogo', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Ricerca per Etichetta Bene', 'maintenances' => 'Manutenzioni', - 'manage_api_keys' => 'Gestisci le Chiavi API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Produttore', 'manufacturers' => 'Produttori', 'markdown' => 'Questo campo consente un Markdown di tipo Github.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Seleziona tutto', 'search' => 'Cerca', 'select_category' => 'Seleziona una categoria', - 'select_datasource' => 'Seleziona una Origine Dati', + 'select_datasource' => 'Select a data source', 'select_department' => 'Seleziona un Reparto', 'select_depreciation' => 'Seleziona un tipo di Svalutazione', 'select_location' => 'Seleziona un Luogo', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Firmato Da', 'skin' => 'Tema', 'webhook_msg_note' => 'Una notifica verrà inviata tramite webhook', - 'webhook_test_msg' => 'Ciao! Sembra che l\'integrazione di :app su Snipe-IT funzioni!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO: Alcune caratteristiche sono disabilitate in questa modalità.', 'site_name' => 'Nome sito', 'state' => 'Provincia', 'status_labels' => 'Etichette di Stato', + 'status_label' => 'Status Label', 'status' => 'Stato', 'accept_eula' => 'Accettazione Accordo', 'supplier' => 'Fornitore', @@ -339,16 +340,16 @@ return [ 'view_all' => 'visualizza tutti', 'hide_deleted' => 'Nascondi Eliminati', 'email' => 'Email', - 'do_not_change' => 'Non Cambiare', - 'bug_report' => 'Segnala un Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Manuale Utente', 'setup_step_1' => 'Passo 1', 'setup_step_2' => 'Passo 2', 'setup_step_3' => 'Passo 3', 'setup_step_4' => 'Passo 4', 'setup_config_check' => 'Controllo Configurazione', - 'setup_create_database' => 'Crea tabelle database', - 'setup_create_admin' => 'Crea utente Amministratore', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finito!', 'bulk_edit_about_to' => 'Stai per modificare quanto segue: ', 'checked_out' => 'Assegnato', diff --git a/resources/lang/it-IT/localizations.php b/resources/lang/it-IT/localizations.php index cc7ff23b1..c56b06d73 100644 --- a/resources/lang/it-IT/localizations.php +++ b/resources/lang/it-IT/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malese', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolo', - 'no-NO'=> 'Norvegese', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persiano', 'pl-PL'=> 'Polacco', 'pt-PT'=> 'Portoghese', diff --git a/resources/lang/it-IT/validation.php b/resources/lang/it-IT/validation.php index 753136c6a..48b47f87b 100644 --- a/resources/lang/it-IT/validation.php +++ b/resources/lang/it-IT/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Il campo :attribute deve essere presente.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'La tua attuale password non è corretta', 'dumbpwd' => 'Questa password è troppo comune.', 'statuslabel_type' => 'È necessario selezionare un tipo di etichetta di stato valido', + 'custom_field_not_found' => 'Questo campo non sembra esistere, si prega di ricontrollare i nomi dei campi personalizzati.', + 'custom_field_not_found_on_model' => 'Sembra che questo campo esista, ma non è disponibile tra i campi di questo Modello di Bene.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/iu-NU/account/general.php b/resources/lang/iu-NU/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/iu-NU/account/general.php +++ b/resources/lang/iu-NU/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/iu-NU/admin/locations/message.php b/resources/lang/iu-NU/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/iu-NU/admin/locations/message.php +++ b/resources/lang/iu-NU/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/iu-NU/admin/settings/general.php b/resources/lang/iu-NU/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/iu-NU/admin/settings/general.php +++ b/resources/lang/iu-NU/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/iu-NU/admin/settings/message.php b/resources/lang/iu-NU/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/iu-NU/admin/settings/message.php +++ b/resources/lang/iu-NU/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/iu-NU/button.php b/resources/lang/iu-NU/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/iu-NU/button.php +++ b/resources/lang/iu-NU/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/iu-NU/general.php b/resources/lang/iu-NU/general.php index b3a6b3432..444ed5408 100644 --- a/resources/lang/iu-NU/general.php +++ b/resources/lang/iu-NU/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/iu-NU/localizations.php b/resources/lang/iu-NU/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/iu-NU/localizations.php +++ b/resources/lang/iu-NU/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/iu-NU/validation.php b/resources/lang/iu-NU/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/iu-NU/validation.php +++ b/resources/lang/iu-NU/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ja-JP/account/general.php b/resources/lang/ja-JP/account/general.php index 8559381df..961f1bb93 100644 --- a/resources/lang/ja-JP/account/general.php +++ b/resources/lang/ja-JP/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => '効果音を有効にする', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ja-JP/admin/locations/message.php b/resources/lang/ja-JP/admin/locations/message.php index d9bd56017..3ec4688cb 100644 --- a/resources/lang/ja-JP/admin/locations/message.php +++ b/resources/lang/ja-JP/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'ロケーションが存在しません。', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'この設置場所は1人以上の利用者に関連付けされているため、削除できません。設置場所の関連付けを削除し、もう一度試して下さい。 ', 'assoc_child_loc' => 'この設置場所は、少なくとも一つの配下の設置場所があります。この設置場所を参照しないよう更新して下さい。 ', 'assigned_assets' => '割り当て済みアセット', diff --git a/resources/lang/ja-JP/admin/settings/general.php b/resources/lang/ja-JP/admin/settings/general.php index 87b17bce7..e7365c2d6 100644 --- a/resources/lang/ja-JP/admin/settings/general.php +++ b/resources/lang/ja-JP/admin/settings/general.php @@ -221,6 +221,8 @@ return [ 'webhook_integration_help' => 'Slackとの連携は任意ですが、利用する場合はエンドポイントとチャンネルが必要です。Slackとの連携を設定するには、まず、SlackにIncoming Webhookを作成する必要があります。Slack統合テスト ボタンをクリックし、設定が正しいことを確認してから保存してください。 ', 'webhook_integration_help_button' => ':app の設定を保存すると、テストボタンが表示されます。', 'webhook_test_help' => ':app の連携が正しく設定されているかどうかをテストします。:app の設定を最初に保存しなければなりません。', + 'shortcuts_enabled' => 'ショートカットを有効化', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT バージョン', 'support_footer' => 'フッターのリンクをサポートします。 ', 'support_footer_help' => 'Snipe-ITサポート情報とユーザーマニュアルへのリンクを確認する', diff --git a/resources/lang/ja-JP/admin/settings/message.php b/resources/lang/ja-JP/admin/settings/message.php index 9b97d3576..41ba319b0 100644 --- a/resources/lang/ja-JP/admin/settings/message.php +++ b/resources/lang/ja-JP/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => '復元を行います。現在データベースにある既存のデータを上書きします。 これにより、既存のすべてのユーザー(あなたを含む) もログアウトします。', 'restore_confirm' => ':filename からデータベースを復元してもよろしいですか?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'パージ中にエラーが発生しました。 ', 'validation_failed' => 'パージの確定方法が正しくありません。入力してください、単語「削除」確認ボックス。', diff --git a/resources/lang/ja-JP/button.php b/resources/lang/ja-JP/button.php index 63b37c894..609720810 100644 --- a/resources/lang/ja-JP/button.php +++ b/resources/lang/ja-JP/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ja-JP/general.php b/resources/lang/ja-JP/general.php index e253003f3..621fa7922 100644 --- a/resources/lang/ja-JP/general.php +++ b/resources/lang/ja-JP/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => '消耗品数', 'country' => '国', 'could_not_restore' => ':item_type: の復元エラー :error', - 'not_deleted' => ':item_type は削除されないため、復元できません', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => '新規作成', 'created' => 'アイテムを作成しました', 'created_asset' => '資産を作成', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'このアプリケーションはデバッグモードがONのままプロダクションモードで実行されています。もしアプリケーションが外部からアクセス可能な場合、機密データが抜き取られる可能性があります。.envAPP_DEBUGfalseにしてください。', 'delete' => '削除', 'delete_confirm' => ':item を削除してもよろしいですか?', - 'delete_confirm_no_undo' => ':itemを削除してもよろしいですか?これは元に戻すことはできません。', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => '削除しました。', 'delete_seats' => 'ライセンスを削除', 'deletion_failed' => '削除に失敗しました', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => '苗字_名前のイニシャル (smith_j@example.com)', 'firstinitial.lastname' => '名前.イニシャルと苗字 (j.smith@example.com)', 'firstnamelastinitial' => '名前と苗字のイニシャル (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => '名前', 'first_name_format' => '名前 (jane@example.com)', 'files' => 'ファイル', @@ -156,9 +156,9 @@ return [ 'image_delete' => '画像を削除', 'include_deleted' => '削除された資産を含める', 'image_upload' => '画像をアップロード', - 'filetypes_accepted_help' => 'アップロード可能なファイル形式は :types です。アップロード可能な最大サイズは :size です。|アップロード可能なファイル形式は :types です。アップロード可能な最大サイズは :size です。', - 'filetypes_size_help' => '許可されている最大アップロードサイズは :size です。', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'この画像ファイルは読み取れませんでした。受け入れられるファイルタイプはjpg、webp、png、gif、svgです。このファイルのmimetypeは:mimetypeです。', 'import' => 'インポート', 'import_this_file' => 'フィールドをマップし、このファイルを処理します', @@ -183,7 +183,7 @@ return [ 'licenses_available' => '利用可能なライセンス', 'licenses' => 'ライセンス数', 'list_all' => '全ての一覧', - 'loading' => '読み込み中… お待ちください…', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'このフィールド値はデモインストールでは保存されません。', 'feature_disabled' => 'この機能は、デモインストールでは無効化されています。', 'location' => '設置場所', @@ -193,7 +193,7 @@ return [ 'logout' => 'ログアウト', 'lookup_by_tag' => '資産タグで参照', 'maintenances' => 'メンテナンス', - 'manage_api_keys' => 'APIキーの管理', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => '製造元', 'manufacturers' => '製造元の数', 'markdown' => 'このフィールドでは Github flavored markdown. が利用可能です', @@ -254,7 +254,7 @@ return [ 'select_all' => 'すべて選択', 'search' => '検索', 'select_category' => 'カテゴリを選択', - 'select_datasource' => 'データソースを選択', + 'select_datasource' => 'Select a data source', 'select_department' => '部署を選択', 'select_depreciation' => '減価償却タイプを選択', 'select_location' => '設置場所を選択', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => '署名された', 'skin' => 'スキン', 'webhook_msg_note' => 'Webhook経由で通知が送信されます', - 'webhook_test_msg' => ':app とSnipe-ITの連携がうまくいっているようです!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'デモモード : いくつかの機能はこのインストールでは無効化されます', 'site_name' => 'サイト名', 'state' => '都道府県', 'status_labels' => 'ステータスラベル', + 'status_label' => 'Status Label', 'status' => 'ステータス', 'accept_eula' => '受け入れ同意', 'supplier' => '仕入先', @@ -339,16 +340,16 @@ return [ 'view_all' => 'すべて表示', 'hide_deleted' => '削除されたものを隠す', 'email' => 'メール', - 'do_not_change' => '変更しない', - 'bug_report' => 'バグを報告', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'ユーザーマニュアル', 'setup_step_1' => 'ステップ 1', 'setup_step_2' => 'ステップ 2', 'setup_step_3' => 'ステップ 3', 'setup_step_4' => 'ステップ 4', 'setup_config_check' => '設定チェック', - 'setup_create_database' => 'データベーステーブルの作成', - 'setup_create_admin' => '管理者ユーザーを作成', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => '完了しました!', 'bulk_edit_about_to' => '次を編集しようとしています: ', 'checked_out' => 'チェックアウト', diff --git a/resources/lang/ja-JP/localizations.php b/resources/lang/ja-JP/localizations.php index 07edf8a50..e09408cd7 100644 --- a/resources/lang/ja-JP/localizations.php +++ b/resources/lang/ja-JP/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ja-JP/validation.php b/resources/lang/ja-JP/validation.php index 7fd961d13..933c384fa 100644 --- a/resources/lang/ja-JP/validation.php +++ b/resources/lang/ja-JP/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':attribute フィールドは必須です。', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => '現在のパスワードが正しくありません。', 'dumbpwd' => 'そのパスワードはあまりにも脆弱です。', 'statuslabel_type' => '有効なステータスラベルの種類を選択する必要があります。', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/km-KH/account/general.php b/resources/lang/km-KH/account/general.php index 3a02971b3..48bc8f630 100644 --- a/resources/lang/km-KH/account/general.php +++ b/resources/lang/km-KH/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'ធ្វើបច្ចុប្បន្នភាពគណនីដោយជោគជ័យ', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/km-KH/admin/locations/message.php b/resources/lang/km-KH/admin/locations/message.php index 326cd9793..2db546b4c 100644 --- a/resources/lang/km-KH/admin/locations/message.php +++ b/resources/lang/km-KH/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'ទីតាំងមិនមានទេ។', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'បច្ចុប្បន្នទីតាំងនេះត្រូវបានភ្ជាប់ជាមួយទ្រព្យសកម្មយ៉ាងហោចណាស់មួយ ហើយមិនអាចលុបបានទេ។ សូមអាប់ដេតទ្រព្យសកម្មរបស់អ្នក ដើម្បីកុំឱ្យយោងទីតាំងនេះតទៅទៀត ហើយព្យាយាមម្តងទៀត។ ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'ទ្រព្យសកម្មដែលបានចាត់តាំង', diff --git a/resources/lang/km-KH/admin/settings/general.php b/resources/lang/km-KH/admin/settings/general.php index 17c3bf7f8..9e34f6f98 100644 --- a/resources/lang/km-KH/admin/settings/general.php +++ b/resources/lang/km-KH/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/km-KH/admin/settings/message.php b/resources/lang/km-KH/admin/settings/message.php index 3b837d170..6890e31a3 100644 --- a/resources/lang/km-KH/admin/settings/message.php +++ b/resources/lang/km-KH/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'បាទ ស្ដារវាឡើងវិញ។ ខ្ញុំទទួលស្គាល់ថាវានឹងសរសេរជាន់លើទិន្នន័យដែលមានស្រាប់ណាមួយនាពេលបច្ចុប្បន្ននៅក្នុងមូលដ្ឋានទិន្នន័យ។ វាក៏នឹងចេញពីអ្នកប្រើប្រាស់ដែលមានស្រាប់របស់អ្នកទាំងអស់ (រួមទាំងអ្នក)', 'restore_confirm' => 'តើ​អ្នក​ប្រាកដ​ថា​អ្នក​ចង់​ស្ដារ​មូលដ្ឋាន​ទិន្នន័យ​របស់​អ្នក​ពី :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'កំហុសបានកើតឡើងខណៈពេលកំពុងសម្អាត។ ', 'validation_failed' => 'ការបញ្ជាក់ការសម្អាតរបស់អ្នកមិនត្រឹមត្រូវទេ។ សូមវាយពាក្យ "DELETE" នៅក្នុងប្រអប់បញ្ជាក់។', diff --git a/resources/lang/km-KH/button.php b/resources/lang/km-KH/button.php index 6c5450a04..3c37f2c4f 100644 --- a/resources/lang/km-KH/button.php +++ b/resources/lang/km-KH/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/km-KH/general.php b/resources/lang/km-KH/general.php index 3fb07c6d6..469f2404e 100644 --- a/resources/lang/km-KH/general.php +++ b/resources/lang/km-KH/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'ប្រទេស', 'could_not_restore' => 'កំហុសក្នុងការស្តារ :item_type: :error', - 'not_deleted' => ':item_type មិនត្រូវបានលុបទេ ដូច្នេះវាមិនអាចស្ដារឡើងវិញបានទេ។', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'បង្កើត​ថ្មី', 'created' => 'ធាតុត្រូវបានបង្កើត', 'created_asset' => 'ទ្រព្យសកម្មដែលបានបង្កើត', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'កម្មវិធី​នេះ​កំពុង​ដំណើរការ​ក្នុង​ទម្រង់​ផលិត​ដោយ​បាន​បើក​ការ​បំបាត់​កំហុស។ វាអាចបង្ហាញទិន្នន័យរសើប ប្រសិនបើកម្មវិធីរបស់អ្នកអាចចូលប្រើបានទៅកាន់ពិភពខាងក្រៅ។ បិទមុខងារបំបាត់កំហុសដោយកំណត់តម្លៃ APP_DEBUG នៅក្នុងឯកសារ .env របស់អ្នកទៅជា false។', 'delete' => 'លុប', 'delete_confirm' => 'តើអ្នកប្រាកដថាចង់លុប :item មែនទេ?', - 'delete_confirm_no_undo' => 'តើអ្នកប្រាកដថាចង់លុប :item មែនទេ? នេះមិនអាចត្រឡប់វិញបានទេ។', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'បានលុប', 'delete_seats' => 'កៅអីដែលបានលុប', 'deletion_failed' => 'ការលុបបានបរាជ័យ', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'នាមត្រកូល នាមខ្លួនដំបូង (smith_j@example.com)', 'firstinitial.lastname' => 'នាមត្រកូលដំបូង (j.smith@example.com)', 'firstnamelastinitial' => 'នាមខ្លួន នាមត្រកូលដំបូង (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'នាមខ្លួន', 'first_name_format' => 'នាមខ្លួន (jane@example.com)', 'files' => 'ឯកសារ', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'លុបរូបភាព', 'include_deleted' => 'រួមបញ្ចូលទ្រព្យសម្បត្តិដែលបានលុប', 'image_upload' => 'បង្ហោះរូបភាព', - 'filetypes_accepted_help' => 'ប្រភេទឯកសារដែលទទួលយកគឺ៖ ប្រភេទ. ទំហំផ្ទុកឡើងអតិបរមាដែលអនុញ្ញាតគឺ :size.|ប្រភេទឯកសារដែលទទួលយកគឺ :types. ទំហំផ្ទុកឡើងអតិបរមាដែលអនុញ្ញាតគឺ៖ ទំហំ.', - 'filetypes_size_help' => 'ទំហំផ្ទុកឡើងអតិបរមាដែលអនុញ្ញាតគឺ :ទំហំ.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'ឯកសាររូបភាពនេះមិនអាចអានបានទេ។ ប្រភេទឯកសារដែលទទួលយកគឺ jpg, webp, png, gif និង svg ។ ប្រភេទ mime នៃឯកសារនេះគឺ៖ :mimetype.', 'import' => 'នាំចូល', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'មានអាជ្ញាប័ណ្ណ', 'licenses' => 'អាជ្ញាប័ណ្ណ', 'list_all' => 'រាយបញ្ជីទាំងអស់', - 'loading' => 'កំពុងផ្ទុក... សូមរង់ចាំ....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'តម្លៃវាលនេះនឹងមិនត្រូវបានរក្សាទុកក្នុងការដំឡើងសាកល្បងទេ។', 'feature_disabled' => 'មុខងារនេះត្រូវបានបិទសម្រាប់ការដំឡើងសាកល្បង។', 'location' => 'ទីតាំង', @@ -193,7 +193,7 @@ return [ 'logout' => 'ចាកចេញ', 'lookup_by_tag' => 'រកមើលដោយស្លាកទ្រព្យសម្បត្តិ', 'maintenances' => 'ការថែទាំ', - 'manage_api_keys' => 'គ្រប់គ្រង API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'ក្រុមហ៊ុនផលិត', 'manufacturers' => 'ក្រុមហ៊ុនផលិត', 'markdown' => 'វាលនេះអនុញ្ញាតឱ្យ Github flavored markdown។', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'ជ្រើសរើសទីតាំងមួយ', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'ស្បែក', 'webhook_msg_note' => 'ការជូនដំណឹងនឹងត្រូវបានផ្ញើតាមរយៈ webhook', - 'webhook_test_msg' => 'អូ ហៃ! មើលទៅដូចជា៖ ការរួមបញ្ចូលកម្មវិធីរបស់អ្នកជាមួយ Snipe-IT កំពុងដំណើរការ!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'របៀបសាកល្បង៖ មុខងារមួយចំនួនត្រូវបានបិទសម្រាប់ការដំឡើងនេះ។', 'site_name' => 'ឈ្មោះ​វេ​ប​សាយ', 'state' => 'រដ្ឋ', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'ស្ថានភាព', 'accept_eula' => 'ទទួលយកកិច្ចព្រមព្រៀង', 'supplier' => 'អ្នកផ្គត់ផ្គង់', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/km-KH/localizations.php b/resources/lang/km-KH/localizations.php index 7abb9b3d5..9bc3ba1aa 100644 --- a/resources/lang/km-KH/localizations.php +++ b/resources/lang/km-KH/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'ម៉ាឡេ', 'mi-NZ'=> 'ម៉ៅរី', 'mn-MN'=> 'ម៉ុងហ្គោលី', - 'no-NO'=> 'ន័រវេស', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'ពែរ្ស', 'pl-PL'=> 'ប៉ូឡូញ', 'pt-PT'=> 'ព័រទុយហ្គាល់', diff --git a/resources/lang/km-KH/validation.php b/resources/lang/km-KH/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/km-KH/validation.php +++ b/resources/lang/km-KH/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ko-KR/account/general.php b/resources/lang/ko-KR/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ko-KR/account/general.php +++ b/resources/lang/ko-KR/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ko-KR/admin/locations/message.php b/resources/lang/ko-KR/admin/locations/message.php index 364b2dbd6..c02b6f0d8 100644 --- a/resources/lang/ko-KR/admin/locations/message.php +++ b/resources/lang/ko-KR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => '장소가 존재하지 않습니다.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => '이 장소는 현재 적어도 한명의 사용자와 연결되어 있어서 삭제할 수 없습니다. 사용자가 더 이상 이 장소를 참조하지 않게 갱신하고 다시 시도해주세요. ', 'assoc_child_loc' => '이 장소는 현재 하나 이상의 하위 장소를 가지고 있기에 삭제 할 수 없습니다. 이 장소의 참조를 수정하고 다시 시도해 주세요. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ko-KR/admin/settings/general.php b/resources/lang/ko-KR/admin/settings/general.php index 9e2def2bd..970e2f032 100644 --- a/resources/lang/ko-KR/admin/settings/general.php +++ b/resources/lang/ko-KR/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT 버전', 'support_footer' => '꼬리말 링크 지원', 'support_footer_help' => 'Snipe-IT 지원 정보 및 사용자 매뉴얼 보기 권한 설정', diff --git a/resources/lang/ko-KR/admin/settings/message.php b/resources/lang/ko-KR/admin/settings/message.php index 7fb39894a..00a06079e 100644 --- a/resources/lang/ko-KR/admin/settings/message.php +++ b/resources/lang/ko-KR/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => '삭제중 오류가 발생하였습니다. ', 'validation_failed' => '삭제 확인 절차가 잘못되었습니다. 확인 상자에 "DELETE"를 입력해 주세요.', diff --git a/resources/lang/ko-KR/button.php b/resources/lang/ko-KR/button.php index fc4b5d344..6541d116a 100644 --- a/resources/lang/ko-KR/button.php +++ b/resources/lang/ko-KR/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ko-KR/general.php b/resources/lang/ko-KR/general.php index b3d2e0137..3fbc48f1f 100644 --- a/resources/lang/ko-KR/general.php +++ b/resources/lang/ko-KR/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => '소모품', 'country' => '국가명', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => '새로 생성', 'created' => '품목 생성됨', 'created_asset' => '생성된 자산', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => '이 프로그램은 디버깅이 가능한 제품 모드에서 구동중입니다. 당신의 프로그램이 외부 환경과 접속이 가능하다면 중요한 자료가 유출될 수 있습니다. .env 파일의 APP_DEBUG 값을 false 로 설정하여 디버깅을 비활성화 하세요.', 'delete' => '삭제', 'delete_confirm' => ':item 을 삭제 하시겠습니까?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => '삭제됨', 'delete_seats' => '삭제한 Seat', 'deletion_failed' => '삭제 실패', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => '이름', 'first_name_format' => '이름 (jane@example.com)', 'files' => '파일', @@ -156,9 +156,9 @@ return [ 'image_delete' => '이미지 삭제', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => '이미지 올리기', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => '불러오기', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => '라이선스', 'list_all' => '전체 목록보기', - 'loading' => '로딩 중입니다. 잠시만 기다려 주십시오.', + 'loading' => 'Loading... please wait...', 'lock_passwords' => '이 항목은 데모에서 저장이 불가능합니다.', 'feature_disabled' => '데모 설치본에서는 이 기능을 사용할 수 없습니다.', 'location' => '장소', @@ -193,7 +193,7 @@ return [ 'logout' => '로그아웃', 'lookup_by_tag' => '자산 태그로 조회', 'maintenances' => '유지 관리', - 'manage_api_keys' => 'API Key 관리', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => '제조업체', 'manufacturers' => '제조업체', 'markdown' => '이 항목은 GFM을 따릅니다.', @@ -254,7 +254,7 @@ return [ 'select_all' => '모두 선택', 'search' => '찾기', 'select_category' => '분류 선택', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => '부서 선택', 'select_depreciation' => '감가 상각 유형 선택', 'select_location' => '장소 선택', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => '스킨', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => '데모 모드: 설치 시 일부 기능은 사용할 수 없습니다.', 'site_name' => '사이트 명', 'state' => '주', 'status_labels' => '상태 딱지', + 'status_label' => 'Status Label', 'status' => '상태', 'accept_eula' => 'Acceptance Agreement', 'supplier' => '공급자', @@ -339,16 +340,16 @@ return [ 'view_all' => '모두 보기', 'hide_deleted' => 'Hide Deleted', 'email' => '이메일', - 'do_not_change' => 'Do Not Change', - 'bug_report' => '오류 보고', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => '사용자 설명서', 'setup_step_1' => '1 단계', 'setup_step_2' => '2 단계', 'setup_step_3' => '3 단계', 'setup_step_4' => '4 단계', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => '관리자 유저 생성', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => '완료됨', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => '반출 확인', diff --git a/resources/lang/ko-KR/localizations.php b/resources/lang/ko-KR/localizations.php index 863b6890a..30d41de63 100644 --- a/resources/lang/ko-KR/localizations.php +++ b/resources/lang/ko-KR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ko-KR/validation.php b/resources/lang/ko-KR/validation.php index 3e1d42d4a..5e61b80ff 100644 --- a/resources/lang/ko-KR/validation.php +++ b/resources/lang/ko-KR/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':attribute 항목이 있어야 합니다.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => '현재 비밀번호가 잘못되었습니다.', 'dumbpwd' => '그 비밀번호는 너무 일반적입니다.', 'statuslabel_type' => '유효한 상태 라벨 형식을 선택해 주셔야 합니다', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/lt-LT/account/general.php b/resources/lang/lt-LT/account/general.php index 3b13aa1e8..e2c76ecb8 100644 --- a/resources/lang/lt-LT/account/general.php +++ b/resources/lang/lt-LT/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Peržiūrėkite API informaciją, kad rastumėte konkrečius API galinius taškus ir papildomą API dokumentaciją.', 'profile_updated' => 'Paskyra atnaujinta sėkmingai', 'no_tokens' => 'Nesate sukūrę jokių asmeninių prieigos raktų.', + 'enable_sounds' => 'Įjungti garso efektus', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/lt-LT/admin/depreciations/message.php b/resources/lang/lt-LT/admin/depreciations/message.php index 433a1bb48..20c24dd2a 100644 --- a/resources/lang/lt-LT/admin/depreciations/message.php +++ b/resources/lang/lt-LT/admin/depreciations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Nėra tokios nusidėvėjimo klasės.', - 'assoc_users' => 'Šis nusidėvėjimas šiuo metu yra susietas su vienu ar keliais įrangos modeliais ir negali būti panaikintas. Panaikinkite susietus modelius ir bandykite iš naujo. ', + 'assoc_users' => 'Šis nusidėvėjimas šiuo metu yra susietas su vienu ar keliais modeliais ir negali būti panaikintas. Panaikinkite susietus modelius ir bandykite iš naujo. ', 'create' => array( diff --git a/resources/lang/lt-LT/admin/groups/message.php b/resources/lang/lt-LT/admin/groups/message.php index 8ce76df78..c56d35fb6 100644 --- a/resources/lang/lt-LT/admin/groups/message.php +++ b/resources/lang/lt-LT/admin/groups/message.php @@ -3,7 +3,7 @@ return array( 'group_exists' => 'Tokia grupė jau yra!', - 'group_not_found' => 'Tokios grupės [:id] nėra.', + 'group_not_found' => 'Tokios grupės :id nėra.', 'group_name_required' => 'Pavadinimo laukas yra privalomas', 'success' => array( diff --git a/resources/lang/lt-LT/admin/groups/table.php b/resources/lang/lt-LT/admin/groups/table.php index e81468207..03e8a4dd3 100644 --- a/resources/lang/lt-LT/admin/groups/table.php +++ b/resources/lang/lt-LT/admin/groups/table.php @@ -2,7 +2,7 @@ return array( - 'id' => 'Id', + 'id' => 'ID', 'name' => 'Pavadinimas', 'users' => 'Naudotojų skaičius', diff --git a/resources/lang/lt-LT/admin/hardware/form.php b/resources/lang/lt-LT/admin/hardware/form.php index 8a5848ea1..f589d46ff 100644 --- a/resources/lang/lt-LT/admin/hardware/form.php +++ b/resources/lang/lt-LT/admin/hardware/form.php @@ -13,7 +13,7 @@ return [ 'bulk_update_with_custom_field' => 'Atminkite, kad turtas yra :asset_model_count skirtingų modelių tipų.', 'bulk_update_model_prefix' => 'Modeliams', 'bulk_update_custom_field_unique' => 'Tai unikalus laukas, todėl jo negalima redaguoti masinio redagavimo būdu.', - 'checkedout_to' => 'Išduota', + 'checkedout_to' => 'Kam išduota', 'checkout_date' => 'Išdavimo data', 'checkin_date' => 'Paėmimo data', 'checkout_to' => 'Išduoti', diff --git a/resources/lang/lt-LT/admin/hardware/general.php b/resources/lang/lt-LT/admin/hardware/general.php index dbeaf08e4..8dede1a06 100644 --- a/resources/lang/lt-LT/admin/hardware/general.php +++ b/resources/lang/lt-LT/admin/hardware/general.php @@ -3,7 +3,7 @@ return [ 'about_assets_title' => 'Apie turtą', 'about_assets_text' => 'Turtas, tai daiktai, kuriuos galima sekti pagal serijinį ar inventorinį numerį. Įprastai, tai yra didesnės vertės daiktai, kurių individualus identifikavimas yra svarbus.', - 'archived' => 'Archyvuota', + 'archived' => 'Archyvuotas', 'asset' => 'Turtas', 'bulk_checkout' => 'Išduoti turtą', 'bulk_checkin' => 'Paimti turtą', @@ -17,13 +17,13 @@ return [ 'model_deleted' => 'Šis turto modelis buvo panaikintas. Pirmiau turite atkurti modelį, tada galėsite atkurti patį turtą.', 'model_invalid' => 'Šiam turtui šis modelis netinka.', 'model_invalid_fix' => 'Turtas turi būti atnaujintas parenkant tinkamą turto modelį, kad jį būtų galima išduoti/paimti ar audituoti.', - 'requestable' => 'Užsakoma', - 'requested' => 'Užsakyta', - 'not_requestable' => 'Neužsakoma', - 'requestable_status_warning' => 'Nekeisti užsakomos įrangos būsenos', + 'requestable' => 'Užsakomas', + 'requested' => 'Užsakytas', + 'not_requestable' => 'Neužsakomas', + 'requestable_status_warning' => 'Nekeisti užsakomo turto būsenos', 'restore' => 'Atkurti turtą', - 'pending' => 'Ruošiama', - 'undeployable' => 'Negalimas naudoti', + 'pending' => 'Ruošiamas', + 'undeployable' => 'Neišduotinas', 'undeployable_tooltip' => 'Šis turtas yra pažymėtas kaip neišduotinas, todėl šiuo metu jo negalima išduoti.', 'view' => 'Peržiūrėti turtą', 'csv_error' => 'Jūsų CSV faile yra klaida:', diff --git a/resources/lang/lt-LT/admin/locations/message.php b/resources/lang/lt-LT/admin/locations/message.php index ec078970e..e92469c0a 100644 --- a/resources/lang/lt-LT/admin/locations/message.php +++ b/resources/lang/lt-LT/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Tokios vietos nėra.', - 'assoc_users' => 'Šios vietos negalima panaikinti, nes ji yra bent vieno turto vieneto ar naudotojo vieta, jai yra priskirtas turtas arba ji yra nurodyta kaip pagrindinė kitos vietos vieta. Atnaujinkite savo turtą, naudotojus ir vietas, kad jie nebeturėtų sąsajų su šia vieta ir bandykite dar kartą. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Ši vieta šiuo metu yra susieta bent su vienu turto vienetu ir negali būti panaikinta. Atnaujinkite savo turtą, kad nebebūtų sąsajos su šia vieta, ir bandykite dar kartą. ', 'assoc_child_loc' => 'Ši vieta šiuo metu yra kaip pagrindinė bent vienai žemesnio lygio vietai ir negali būti panaikinta. Atnaujinkite savo žemesnio lygio vietas, kad nebebūtų sąsajos su šia vieta, ir bandykite dar kartą. ', 'assigned_assets' => 'Priskirtas turtas', diff --git a/resources/lang/lt-LT/admin/locations/table.php b/resources/lang/lt-LT/admin/locations/table.php index 1180b8f04..7ad4b8da6 100644 --- a/resources/lang/lt-LT/admin/locations/table.php +++ b/resources/lang/lt-LT/admin/locations/table.php @@ -2,7 +2,7 @@ return [ 'about_locations_title' => 'Apie vietas', - 'about_locations' => 'Vietos naudojamos stebėti naudotojų, turto ir kitų objektų buvimo vietą', + 'about_locations' => 'Vietos naudojamos stebėti naudotojų, turto ir kitų daiktų buvimo vietą', 'assets_rtd' => 'Turtas', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted. 'assets_checkedout' => 'Priskirtas turtas', 'id' => 'ID', diff --git a/resources/lang/lt-LT/admin/settings/general.php b/resources/lang/lt-LT/admin/settings/general.php index e3ec774a6..88f9fa61c 100644 --- a/resources/lang/lt-LT/admin/settings/general.php +++ b/resources/lang/lt-LT/admin/settings/general.php @@ -28,7 +28,7 @@ return [ 'auto_increment_assets' => 'Generuoti automatiškai didėjančius inventorinius numerius', 'auto_increment_prefix' => 'Prefiksas (pasirinktinai)', 'auto_incrementing_help' => 'Norėdami tai nustatyti, pirmiausia įjunkite automatiškai didėjančius inventorinius numerius', - 'backups' => 'Atsarginė kopija', + 'backups' => 'Atsarginės kopijos', 'backups_help' => 'Kurti, atsisiųsti ir atkurti atsargines kopijas ', 'backups_restoring' => 'Atkurti iš atsarginės kopijos', 'backups_upload' => 'Įkelti atsarginę kopiją', @@ -52,7 +52,7 @@ return [ 'acceptance_note' => 'Pridėkite pastabą prie savo sprendimo (nebūtina)', 'display_asset_name' => 'Rodyti turto pavadinimą', 'display_checkout_date' => 'Rodyti išdavimo datą', - 'display_eol' => 'Rodyti įrangos nurašymo datas lentelės rodinyje', + 'display_eol' => 'Rodyti nurašymo datas lentelės rodinyje', 'display_qr' => 'Rodyti kvadratinius kodus', 'display_alt_barcode' => 'Rodyti 1D brūkšninius kodus', 'email_logo' => 'El. pašto logotipas', @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integracija nėra privaloma, tačiau, jei norite ją naudoti, būtina nurodyti Endpoint ir Channel. Norėdami sukonfigūruoti :app integraciją, pirmiausia turite sukurti įeinantį „Webhook“ pranešimą savo :app paskyroje. Spustelėkite mygtuką Tikrinti :app integraciją, kad patvirtintumėte ar nustatymai yra teisingi, prieš juos išsaugodami. ', 'webhook_integration_help_button' => 'Išsaugojus :app informaciją, pasirodys testavimo mygtukas.', 'webhook_test_help' => 'Patikrinkite, ar jūsų :app integracija sukonfigūruota tinkamai. PIRMA PRIVALOTE IŠSAUGOTI ATNAUJINTUS :app NUSTATYMUS.', + 'shortcuts_enabled' => 'Įgalinti sparčiuosius klavišus', + 'shortcuts_help_text' => 'Windows: Alt + prieigos klavišas, Mac: Control + Option + prieigos klavišas', 'snipe_version' => 'Snipe-IT versija', 'support_footer' => 'Palaikymo nuorodos poraštėje ', 'support_footer_help' => 'Nurodykite, kas mato nuorodas į Snipe-IT palaikymo informaciją ir naudotojo vadovą', diff --git a/resources/lang/lt-LT/admin/settings/message.php b/resources/lang/lt-LT/admin/settings/message.php index a92026b40..e969f1db5 100644 --- a/resources/lang/lt-LT/admin/settings/message.php +++ b/resources/lang/lt-LT/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Taip, atkurti. Suprantu, kad tai perrašys visus šiuo metu duomenų bazėje esančius duomenis. Taip pat, kad bus atjungti visi esami naudotojai (įskaitant mane).', 'restore_confirm' => 'Ar tikrai norite atkurti savo duomenų bazę iš :filename?' ], + 'restore' => [ + 'success' => 'Jūsų sistemos atsarginė kopija buvo atkurta. Prisijunkite iš naujo.' + ], 'purge' => [ 'error' => 'Valymo metu įvyko klaida. ', 'validation_failed' => 'Jūsų įvestas išvalymo patvirtinimas yra neteisingas. Patvirtinimo lauke įveskite žodį „DELETE“.', diff --git a/resources/lang/lt-LT/admin/users/general.php b/resources/lang/lt-LT/admin/users/general.php index bfc8e454d..dddea3197 100644 --- a/resources/lang/lt-LT/admin/users/general.php +++ b/resources/lang/lt-LT/admin/users/general.php @@ -17,8 +17,8 @@ return [ 'last_login' => 'Paskutinis prisijungimas', 'ldap_config_text' => 'LDAP konfigūracijos nustatymus rasite „Administratorius > Nustatymai“. Pasirinkta (neprivaloma) vieta bus priskirta visiems importuotiems naudotojams.', 'print_assigned' => 'Spausdinti išduotą', - 'email_assigned' => 'El. paštu nusiųsti išduotos įrangos sąrašą', - 'user_notified' => 'Naudotojui el. paštu išsiųstas jam priskirto inventoriaus sąrašas.', + 'email_assigned' => 'El. paštu nusiųsti išduoto turto sąrašą', + 'user_notified' => 'Naudotojui el. paštu išsiųstas jam priskirtų daiktų sąrašas.', 'auto_assign_label' => 'Įtraukti šį naudotoją, kai automatiškai priskiriamos tinkamos licencijos', 'auto_assign_help' => 'Praleisti šį naudotoją, kai automatiškai priskiriamos licencijos', 'software_user' => 'Programinė įranga išduota: :name', diff --git a/resources/lang/lt-LT/admin/users/table.php b/resources/lang/lt-LT/admin/users/table.php index 8c1417834..05d7c0dfa 100644 --- a/resources/lang/lt-LT/admin/users/table.php +++ b/resources/lang/lt-LT/admin/users/table.php @@ -13,7 +13,7 @@ return array( 'groupnotes' => 'Pasirinkite grupę, kurią norite priskirti naudotojui ir nepamirškite, kad naudotojas gauna jam priskirtos grupės prieigos teises. Norėdami panaikinti grupių pasirinkimą, naudokite Ctrl + spustelėjimas (arba cmd + spustelėjimas, jei naudojate MacOS).', 'id' => 'Id', 'inherit' => 'Paveldėti', - 'job' => 'Pozicija', + 'job' => 'Pareigos', 'last_login' => 'Paskutinis prisijungimas', 'last_name' => 'Pavardė', 'location' => 'Vieta', diff --git a/resources/lang/lt-LT/button.php b/resources/lang/lt-LT/button.php index a07a94963..5000a6867 100644 --- a/resources/lang/lt-LT/button.php +++ b/resources/lang/lt-LT/button.php @@ -13,20 +13,20 @@ return [ 'request' => 'Užsakyti', 'submit' => 'Išsaugoti', 'upload' => 'Įkelti', - 'select_file' => 'Pasirinkite failą ...', + 'select_file' => 'Pasirinkite failą...', 'select_files' => 'Pasirinkite failus...', 'generate_labels' => '{1} Generuoti etiketę|[2,*] Generuoti etiketes', 'send_password_link' => 'Slaptažodžio nustatymo iš naujo nuoroda', 'go' => 'Vykdyti', 'bulk_actions' => 'Masiniai veiksmai', - 'add_maintenance' => 'Pridėti įrangos aptarnavimą', + 'add_maintenance' => 'Pridėti aptarnavimą', 'append' => 'Papildyti', 'new' => 'Naujas', 'var' => [ 'clone' => 'Klonuoti :item_type', 'edit' => 'Redaguoti :item_type', 'delete' => 'Panaikinti :item_type', - 'restore' => 'Panaikinti :item_type', + 'restore' => 'Atkurti :item_type', 'create' => 'Kurti naują :item_type', 'checkout' => 'Išduoti :item_type', 'checkin' => 'Paimti :item_type', diff --git a/resources/lang/lt-LT/general.php b/resources/lang/lt-LT/general.php index 0cea9225f..e6b61f887 100644 --- a/resources/lang/lt-LT/general.php +++ b/resources/lang/lt-LT/general.php @@ -19,7 +19,7 @@ return [ 'age' => "Amžius", 'all_assets' => 'Visas turtas', 'all' => 'Viskas', - 'archived' => 'Archyvuota', + 'archived' => 'Archyvuotas', 'asset_models' => 'Turto modeliai', 'asset_model' => 'Modelis', 'asset' => 'Turtas', @@ -50,7 +50,7 @@ return [ 'bulk_delete' => 'Panaikinti kelis', 'bulk_actions' => 'Masiniai veiksmai', 'bulk_checkin_delete' => 'Masinis paėmimas / Naudotojų panaikinimas', - 'byod' => 'Naudotojų asmeninė įranga (BYOD)', + 'byod' => 'Naudotojų asmeninis turtas (BYOD)', 'byod_help' => 'Įrenginys yra naudotojo nuosavybė', 'bystatus' => 'pagal būseną', 'cancel' => 'Atšaukti', @@ -76,10 +76,10 @@ return [ 'consumable' => 'Eksploatacinė medžiaga', 'consumables' => 'Eksploatacinės medžiagos', 'country' => 'Šalis', - 'could_not_restore' => 'Atstatymo klaida :item_type: :error', + 'could_not_restore' => 'Klaida atkuriant :item_type: :error', 'not_deleted' => ':item_type nėra panaikintas, todėl negali būti atkurtas', 'create' => 'Sukurti naują', - 'created' => 'Elementas sukurtas', + 'created' => 'Daiktas sukurtas', 'created_asset' => 'sukurtas turtas', 'created_at' => 'Sukurta', 'created_by' => 'Sukūrė', @@ -95,7 +95,7 @@ return [ 'days_to_next_audit' => 'Dienos iki kito audito', 'date' => 'Data', 'debug_warning' => 'Įspėjimas!', - 'debug_warning_text' => 'Ši programa veikia derinimo režimu. Tai gali atskleisti neskelbtinus duomenis, jei jūsų programa yra pasiekiama išoriniam pasauliui. Išjunkite derinimo režimą nustatydami APP_DEBUG reikšmę savo .env faile į false.', + 'debug_warning_text' => 'Ši programa veikia gamybiniu režimu, įjungus derinimą. Tai gali atskleisti neskelbtinus duomenis, jei jūsų programa yra pasiekiama išoriniam pasauliui. Išjunkite derinimo režimą nustatydami APP_DEBUG reikšmę savo .env faile į false.', 'delete' => 'Panaikinti', 'delete_confirm' => 'Ar tikrai norite panaikinti :item?', 'delete_confirm_no_undo' => 'Ar tikrai norite panaikinti :item? Šis veiksmas negrįžtamas.', @@ -104,11 +104,11 @@ return [ 'deletion_failed' => 'Panaikinti nepavyko', 'departments' => 'Skyriai', 'department' => 'Skyrius', - 'deployed' => 'Naudojama', + 'deployed' => 'Naudojamas', 'depreciation' => 'Nusidėvėjimas', 'depreciations' => 'Nusidėvėjimas', 'depreciation_report' => 'Nusidėvėjimo ataskaita', - 'details' => 'Detaliau', + 'details' => 'Informacija', 'download' => 'Atsisiųsti', 'download_all' => 'Atsisųsti visus', 'editprofile' => 'Redaguoti savo profilį', @@ -125,16 +125,16 @@ return [ 'firstname_lastname_format' => 'Vardas.Pavardė (vardas.pavarde@example.com)', 'firstname_lastname_underscore_format' => 'Vardas_Pavardė (vardas_pavarde@example.com)', 'lastnamefirstinitial_format' => 'Pavardė, Vardo pirmoji raidė (pavardev@example.com)', - 'firstintial_dot_lastname_format' => 'V. Pavardė (v.pavarde@example.com)', + 'firstintial_dot_lastname_format' => 'Vardo pirmoji raidė.Pavardė (v.pavarde@example.com)', 'firstname_lastname_display' => 'Vardas Pavardė (Vardenis Pavardenis)', 'lastname_firstname_display' => 'Pavardė Vardas (Pavardenis Vardenis)', 'name_display_format' => 'Vardo atvaizdavimo formatas', 'first' => 'Pirmas', - 'firstnamelastname' => 'Vardas Pavardė (vardaspavarde@example.com)', - 'lastname_firstinitial' => 'Pavardė, Vardo pirmoji raidė (pavarde_v@example.com)', - 'firstinitial.lastname' => 'V. Pavardė (v.pavarde@example.com)', + 'firstnamelastname' => 'VardasPavardė (vardaspavarde@example.com)', + 'lastname_firstinitial' => 'Pavardė_Vardo pirmoji raidė (pavarde_v@example.com)', + 'firstinitial.lastname' => 'Vardo pirmoji raidė.Pavardė (v.pavarde@example.com)', 'firstnamelastinitial' => 'Vardas, Pavardės pirmoji raidė (vardasp@example.com)', - 'lastnamefirstname' => 'Pavardė, Vardas (pavardenis.vardenis@example.com)', + 'lastnamefirstname' => 'Pavardė.Vardas (pavardenis.vardenis@example.com)', 'first_name' => 'Vardas', 'first_name_format' => 'Vardas (vardas@example.com)', 'files' => 'Failai', @@ -143,11 +143,11 @@ return [ 'filesize' => 'Failo dydis', 'file_uploads' => 'Įkelti failai', 'file_upload' => 'Failo įkėlimas', - 'generate' => 'Sukurti', + 'generate' => 'Generuoti', 'generate_labels' => 'Generuoti etiketes', 'github_markdown' => 'Šis laukas leidžia naudoti Github tipo žymėjimą (markdown).', 'groups' => 'Grupės', - 'gravatar_email' => 'Gravatar el. paštas', + 'gravatar_email' => 'Gravatar el. pašto adresas', 'gravatar_url' => 'Pasikeiskite savo avatarą Gravatar.com.', 'history' => 'Istorija', 'history_for' => 'Istorija žmogui: ', @@ -168,12 +168,12 @@ return [ 'asset_maintenance' => 'Turto aptarnavimas', 'asset_maintenance_report' => 'Turto aptarnavimo ataskaita', 'asset_maintenances' => 'Turto aptarnavimai', - 'item' => 'Elementas', - 'item_name' => 'Elemento pavadinimas', + 'item' => 'Daiktas', + 'item_name' => 'Daikto pavadinimas', 'import_file' => 'importuoti CSV failą', 'import_type' => 'CSV importo tipas', 'insufficient_permissions' => 'Nepakankamos teisės!', - 'kits' => 'Įrangos rinkiniai', + 'kits' => 'Turto rinkiniai', 'language' => 'Kalba', 'last' => 'Paskutinis', 'last_login' => 'Paskutinis prisijungimas', @@ -191,18 +191,18 @@ return [ 'locations' => 'Vietos', 'logo_size' => '"Logotipas + tekstas" tipui labiausiai tinka kvadratiniai logotipai. Didžiausias logotipo rodymo dydis yra 50 pikselių aukščio ir 500 pikselių pločio. ', 'logout' => 'Atsijungti', - 'lookup_by_tag' => 'Paieška pagal inventorinį numerį', + 'lookup_by_tag' => 'Paieška pagal inventorinį Nr.', 'maintenances' => 'Aptarnavimai', 'manage_api_keys' => 'Tvarkyti API raktus', 'manufacturer' => 'Gamintojas', 'manufacturers' => 'Gamintojai', 'markdown' => 'Šis laukas leidžia naudoti Github tipo žymes (markdown).', 'min_amt' => 'Mažiausias kiekis', - 'min_amt_help' => 'Mažiausias turimų elementų kiekis, kurį pasiekus yra aktyvuojamas įspėjimas. Palikite lauką "Mažiausias kiekis" tuščią, jei nenorite gauti įspėjimų apie mažą atsargų likutį.', + 'min_amt_help' => 'Mažiausias turimų daiktų kiekis, kurį pasiekus yra aktyvuojamas įspėjimas. Palikite lauką "Mažiausias kiekis" tuščią, jei nenorite gauti įspėjimų apie mažą atsargų likutį.', 'model_no' => 'Modelio Nr.', 'months' => 'mėnesiai', - 'moreinfo' => 'Detaliau', - 'name' => 'Vardas', + 'moreinfo' => 'Išsamiau', + 'name' => 'Pavadinimas', 'new_password' => 'Naujas slaptažodis', 'next' => 'Kitas', 'next_audit_date' => 'Kito audito data', @@ -219,7 +219,7 @@ return [ 'only_deleted' => 'Tik panaikintas turtas', 'page_menu' => 'Rodomi _MENU_ elementai', 'pagination_info' => 'Rodomi nuo _START_ iki _END_ iš _TOTAL_ vienetų', - 'pending' => 'Ruošiama', + 'pending' => 'Ruošiamas', 'people' => 'Žmonės', 'per_page' => 'Rezultatų puslapyje', 'previous' => 'Ankstesnis', @@ -229,10 +229,10 @@ return [ 'purchase_date' => 'Pirkimo data', 'qty' => 'Kiekis', 'quantity' => 'Kiekis', - 'quantity_minimum' => 'Jūs turite įrangos (:count), kurios likutis artimas arba mažesnis už minimalų', + 'quantity_minimum' => 'Jūs turite :count daiktus (-ų), kurių likutis artimas arba mažesnis už minimalų', 'quickscan_checkin' => 'Greitas paėmimas skenuojant', 'quickscan_checkin_status' => 'Paėmimo būsena', - 'ready_to_deploy' => 'Paruošta naudojimui', + 'ready_to_deploy' => 'Paruoštas naudojimui', 'recent_activity' => 'Paskutiniai veiksmai', 'remaining' => 'Likutis', 'remove_company' => 'Pašalinti sąsają su įmone', @@ -241,7 +241,7 @@ return [ 'restore' => 'Atkurti', 'requestable_models' => 'Užsakomi modeliai', 'requestable_items' => 'Užsakomi daiktai', - 'requested' => 'Užsakyta', + 'requested' => 'Užsakytas', 'requested_date' => 'Prašymo data', 'requested_assets' => 'Prašomas turtas', 'requested_assets_menu' => 'Prašomas turtas', @@ -271,14 +271,15 @@ return [ 'show_current' => 'Rodyti dabartinį', 'sign_in' => 'Prisijungti', 'signature' => 'Parašas', - 'signed_off_by' => 'Nurašyta', - 'skin' => 'Išvaizda', + 'signed_off_by' => 'Pasirašė', + 'skin' => 'Tema', 'webhook_msg_note' => 'Pranešimas bus išsiųstas naudojant „webhook“', 'webhook_test_msg' => 'Oh hai! Panašu jog jūsų :app integracija su Snipe-IT veikia!', 'some_features_disabled' => 'DEMO REŽIMAS: šiame režime kai kurios funkcijos yra išjungtos.', 'site_name' => 'Puslapio pavadinimas', 'state' => 'Rajonas', 'status_labels' => 'Būsenos žymos', + 'status_label' => 'Status Label', 'status' => 'Būsena', 'accept_eula' => 'Licencinis sutikimas', 'supplier' => 'Tiekėjas', @@ -294,23 +295,23 @@ return [ 'total_accessories' => 'iš viso priedų', 'total_consumables' => 'iš viso eksploatacinių medžiagų', 'type' => 'Tipas', - 'undeployable' => 'Nepanaudojama', + 'undeployable' => 'Neišduotinas', 'unknown_admin' => 'Nežinomas administratorius', 'username_format' => 'Naudotojo vardo formatas', 'username' => 'Naudotojo vardas', 'update' => 'Atnaujinti', 'upload_filetypes_help' => 'Leidžiami failų tipai yra: png, gif, jpg, jpeg, doc, docx, pdf, xls, xlsx, txt, lic, xml, zip, rtf ir rar. Didžiausias leidžiamas įkeliamų failų dydis yra :size.', - 'uploaded' => 'Įkelti', + 'uploaded' => 'Įkelta', 'user' => 'Naudotojas', 'accepted' => 'priimta', 'declined' => 'nepriimta', 'declined_note' => 'Atsisakymo pastabos', - 'unassigned' => 'Nepriskirta', + 'unassigned' => 'Nepriskirtas', 'unaccepted_asset_report' => 'Nepriimtas turtas', 'users' => 'Naudotojai', 'viewall' => 'Rodyti viską', 'viewassets' => 'Peržiūrėti priskirtą turtą', - 'viewassetsfor' => 'Peržiūrėti turtą – :name', + 'viewassetsfor' => 'Peržiūrėti :name turtą', 'website' => 'Internetinis puslapis', 'welcome' => 'Sveiki, :name', 'years' => 'metai', @@ -352,12 +353,12 @@ return [ 'setup_done' => 'Baigta!', 'bulk_edit_about_to' => 'Ketinate redaguoti šiuos dalykus: ', 'checked_out' => 'Išduota', - 'checked_out_to' => 'Išduota naudotojui', + 'checked_out_to' => 'Kam išduota', 'fields' => 'Laukai', 'last_checkout' => 'Paskutinis išdavimas', - 'due_to_checkin' => 'Šie daiktai (:count) netrukus turės būti išduoti:', + 'due_to_checkin' => 'Šie :count daiktai (-ų) netrukus turės būti paimti:', 'expected_checkin' => 'Numatoma paėmimo data', - 'reminder_checked_out_items' => 'Tai yra pranešimas apie jums išduotą įrangą. Jei manote, kad šis sąrašas yra netikslus (kažko trūksta ar yra priskirta tai, ko jūs manote, kad niekada nesate gavę), prašome susisiekti el. paštu su :reply_to_name šiuo adresu :reply_to_address.', + 'reminder_checked_out_items' => 'Tai yra pranešimas apie jums išduotus daiktus. Jei manote, kad šis sąrašas yra netikslus (kažko trūksta ar yra priskirta tai, ko jūs manote, kad niekada nesate gavę), prašome susisiekti el. paštu su :reply_to_name šiuo adresu :reply_to_address.', 'changed' => 'Pakeista', 'to' => 'Iki', 'report_fields_info' => '

Pasirinkite laukus, kuriuos norėtumėte įtraukti į savo ataskaitą, ir spustelėkite Generuoti. Failas (custom-asset-report-YYYY-mm-dd.csv) bus parsiųstas automatiškai ir galėsite jį atidaryti programoje „Excel“.

@@ -373,7 +374,7 @@ return [ 'ldap_user_sync' => 'LDAP naudotojų sinchronizacija', 'synchronize' => 'Sinchronizuoti', 'sync_results' => 'Sinchronizacijos rezultatai', - 'license_serial' => 'Serijos / produkto raktas', + 'license_serial' => 'Serijinis / produkto raktas', 'invalid_category' => 'Neteisinga kategorija arba tokios kategorijos nėra', 'invalid_item_category_single' => 'Neteisinga :type kategorija arba tokios kategorijos nėra. Prieš bandydami išduoti daiktą, atnaujinkite šią :type kategoriją, kad joje būtų tinkama kategorija.', 'dashboard_info' => 'Tai jūsų valdymo skydas. Yra daug panašių, bet šis yra jūsų.', @@ -403,7 +404,7 @@ return [ 'consumable_name' => 'Eksploatacinės medžiagos pavadinimas:', 'accessory_information' => 'Priedo informacija:', 'accessory_name' => 'Priedo pavadinimas:', - 'clone_item' => 'Klonuoti elementą', + 'clone_item' => 'Klonuoti daiktą', 'checkout_tooltip' => 'Išduoti šį daiktą', 'checkin_tooltip' => 'Paimti šį daiktą, kad jį būtų galima pakartotinai išduoti, atlikti jam aptarnavimą ir pan.', 'checkout_user_tooltip' => 'Išduoti šį daiktą naudotojui', @@ -416,8 +417,8 @@ return [ 'additional_files' => 'Papildomi failai', 'shitty_browser' => 'Neaptiktas joks parašas. Jei naudojate senesnę naršyklę, naudokite modernesnę naršyklę, kad užbaigtumėte turto priėmimą.', 'bulk_soft_delete' =>'Taip pat, panaikinti šiuos naudotojus. Jų turto istorija išliks nepakitusi, kol neišvalysite ištrintų įrašų administratoriaus nustatymuose.', - 'bulk_checkin_delete_success' => 'Jūsų pasirinkti naudotojai buvo panaikinti, o jų elementai buvo paimti.', - 'bulk_checkin_success' => 'Nurodytų naudotojų elementai buvo paimti.', + 'bulk_checkin_delete_success' => 'Jūsų pasirinkti naudotojai buvo panaikinti, o jų daiktai buvo paimti.', + 'bulk_checkin_success' => 'Nurodytų naudotojų daiktai buvo paimti.', 'set_to_null' => 'Išvalyti šio turto reikšmes|Išvalyti visų :asset_count turto vienetų reikšmes ', 'set_users_field_to_null' => 'Išvalyti :field reikšmes šiam naudotojui|Išvalyti :field reikšmes visiems :user_count naudotojams ', 'na_no_purchase_date' => 'N/D - Nenurodyta įsigijimo data', @@ -425,7 +426,7 @@ return [ 'assets_by_status_type' => 'Turtas pagal būsenos tipą', 'pie_chart_type' => 'Valdymo skydo skritulinės diagramos tipas', 'hello_name' => 'Sveiki, :name!', - 'unaccepted_profile_warning' => 'Turite :count elementus, kuriuos reikia priimti. Spustelėkite čia, jei norite juos priimti arba atmesti', + 'unaccepted_profile_warning' => 'Turite :count daiktus, kuriuos reikia priimti. Spustelėkite čia, jei norite juos priimti arba atmesti', 'start_date' => 'Pradžios data', 'end_date' => 'Pabaigos data', 'alt_uploaded_image_thumbnail' => 'Įkelta miniatiūra', @@ -478,9 +479,9 @@ return [ 'autoassign_licenses_help_long' => 'Tai leidžia priskirti licencijas naudotojui, naudojant masinio licencijų priskyrimo sąsają arba cli įrankius. (Pavyzdžiui, galite nenorėti, kad jūsų subrangovai automatiškai gautų tik darbuotojams skirtas licencijas. Jūs vis tiek galite priskirti licencijas šiems naudotojams atskirai, bet jie nebus įtraukti į funkciją „Priskirti licenciją visiems naudotojams“.)', 'no_autoassign_licenses_help' => 'Naudotojo neįtraukti į masinį priskyrimą naudojant licencijų priskyrimo sąsają arba cli įrankius.', 'modal_confirm_generic' => 'Esate tikri?', - 'cannot_be_deleted' => 'Šis elemento ištrinti negalima', - 'cannot_be_edited' => 'Šio elemento redaguoti negalima.', - 'undeployable_tooltip' => 'Šis elemento negalima išduoti. Patikrinkite likutį.', + 'cannot_be_deleted' => 'Šio daikto ištrinti negalima', + 'cannot_be_edited' => 'Šio daikto redaguoti negalima.', + 'undeployable_tooltip' => 'Šio daikto išduoti negalima. Patikrinkite likutį.', 'serial_number' => 'Serijos numeris', 'item_notes' => ':item Pastabos', 'item_name_var' => ':item Pavadinimas', @@ -515,7 +516,7 @@ return [ 'upload_error' => 'Klaida įkeliant failą. Patikrinkite, ar nėra tuščių eilučių ir besidubliuojančių stulpelių pavadinimų.', 'copy_to_clipboard' => 'Kopijuoti į iškarpinę', 'copied' => 'Nukopijuota!', - 'status_compatibility' => 'Jei turtas jau yra išduotas, jo būsena negali būti pakeista į neišduodamos būsenos tipą, todėl šios reikšmės pakeitimas nebus atliekamas.', + 'status_compatibility' => 'Jei turtas jau yra išduotas, jo būsena negali būti pakeista į neišduotinos būsenos tipą, todėl šios reikšmės pakeitimas nebus atliekamas.', 'rtd_location_help' => 'Tai yra turto buvimo vieta, kai jis nėra išduotas', 'item_not_found' => ':item_type ID :id neegzistuoja arba buvo panaikintas', 'action_permission_denied' => 'Neturite teisių atlikti :action :item_type ID :id', @@ -545,12 +546,12 @@ return [ 'countable' => [ 'accessories' => ':count Priedas|:count Priedai', 'assets' => ':count turto vienetas|:count turto vienetai (-ų)', - 'licenses' => ':count Licencija|:count Licencijos', + 'licenses' => ':count licencija|:count licencijos', 'license_seats' => ':count Licencijos vieta|:count Licencijos vietos', 'consumables' => ':count Eksploatacinė medžiaga|:count Eksploatacinės medžiagos', 'components' => ':count Komponentas|:count Komponentai', ], - 'more_info' => 'Detaliau', + 'more_info' => 'Išsamiau', 'quickscan_bulk_help' => 'Pažymėjus šį langelį, turto įrašas bus atnaujintas, kad atspindėtų šią naują vietą. Jei paliksite jį nepažymėtą, vieta bus pažymėta tik audito žurnale. Atkreipkite dėmesį, kad jei šis turtas bus išduotas, tai nepakeis to asmens, turto ar vietos, kuriems išduodamas turtas, buvimo vietos.', 'whoops' => 'Oi!', 'something_went_wrong' => 'Kažkas negerai su jūsų užklausa.', diff --git a/resources/lang/lt-LT/localizations.php b/resources/lang/lt-LT/localizations.php index 8b54054bf..76df23431 100644 --- a/resources/lang/lt-LT/localizations.php +++ b/resources/lang/lt-LT/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malajų', 'mi-NZ'=> 'Maorių', 'mn-MN'=> 'Mongolų', - 'no-NO'=> 'Norvegų', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norvegų bukmolas', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persų', 'pl-PL'=> 'Lenkų', 'pt-PT'=> 'Portugalų', diff --git a/resources/lang/lt-LT/mail.php b/resources/lang/lt-LT/mail.php index 16e2e0096..c4bf973db 100644 --- a/resources/lang/lt-LT/mail.php +++ b/resources/lang/lt-LT/mail.php @@ -19,13 +19,13 @@ return [ 'Expected_Checkin_Report' => 'Numatomo paimti turto ataskaita', 'Expiring_Assets_Report' => 'Bebaigiančio galioti turto ataskaita.', 'Expiring_Licenses_Report' => 'Bebaigiančių galioti licencijų ataskaita.', - 'Item_Request_Canceled' => 'Įrangos užsakymas atšauktas', - 'Item_Requested' => 'Įranga užsakyta', + 'Item_Request_Canceled' => 'Daikto užsakymas atšauktas', + 'Item_Requested' => 'Daiktas užsakytas', 'License_Checkin_Notification' => 'Licencija paimta', 'License_Checkout_Notification' => 'Licencija išduota', 'Low_Inventory_Report' => 'Ataskaita apie mažas atsargas', - 'a_user_canceled' => 'Naudotojas svetainėje atšaukė įrangos užsakymą', - 'a_user_requested' => 'Naudotojas svetainėje užsakė įrangą', + 'a_user_canceled' => 'Naudotojas svetainėje atšaukė daikto užsakymą', + 'a_user_requested' => 'Naudotojas svetainėje užsakė daiktą', 'acceptance_asset_accepted' => 'Naudotojas priėmė daiktą', 'acceptance_asset_declined' => 'Naudotojas nepriėmė daikto', 'accessory_name' => 'Priedo pavadinimas:', @@ -61,10 +61,10 @@ return [ 'link_to_update_password' => 'Spustelėkite šią nuorodą, kad atnaujintumėte savo :web slaptažodį:', 'login' => 'Prisijungti:', 'login_first_admin' => 'Prisijunkite prie savo naujojo „Snipe-IT“ diegimo naudodami žemiau pateiktus prisijungimo duomenis:', - 'low_inventory_alert' => 'Yra :count pozicija, kurios atsargos yra mažesnės (arba greitais bus mažesnės) nei numatytos minimalios atsargos.|Yra :count pozicijų, kurių atsargos yra mažesnės (arba greitais bus mažesnės) nei numatytos minimalios atsargos.', + 'low_inventory_alert' => 'Yra :count daiktas, kurio atsargos yra mažesnės (arba greitais bus mažesnės) nei numatytos minimalios atsargos.|Yra :count daiktai (-ų), kurių atsargos yra mažesnės (arba greitais bus mažesnės) nei numatytos minimalios atsargos.', 'min_QTY' => 'Min. kiekis', 'name' => 'Pavadinimas', - 'new_item_checked' => 'Jums buvo priskirtas naujas elementas, išsami informacija pateikta žemiau.', + 'new_item_checked' => 'Jums buvo priskirtas naujas daiktas, išsami informacija pateikta žemiau.', 'notes' => 'Pastabos', 'password' => 'Slaptažodis:', 'password_reset' => 'Slaptažodžio nustatymas iš naujo', @@ -74,7 +74,7 @@ return [ 'reset_link' => 'Jūsų slaptažodžio nustatymo iš naujo nuoroda', 'reset_password' => 'Spustelėkite čia norėdami iš naujo nustatyti slaptažodį:', 'rights_reserved' => 'Visos teisės saugomos.', - 'serial' => 'Serijos numeris', + 'serial' => 'Serijinis numeris', 'snipe_webhook_test' => 'Snipe-IT integracijos testas', 'snipe_webhook_summary' => 'Snipe-IT integracijos testo suvestinė', 'supplier' => 'Tiekėjas', @@ -88,7 +88,7 @@ return [ 'user' => 'Naudotojas', 'username' => 'Naudotojo vardas', 'unaccepted_asset_reminder' => 'Turite nepriimto turto.', - 'welcome' => 'Sveiki :vardas', + 'welcome' => 'Sveiki, :name', 'welcome_to' => 'Sveiki apsilankę :web!', 'your_assets' => 'Peržiūrėti jūsų turtą', 'your_credentials' => 'Jūsų „Snipe-IT“ prisijungimo duomenys', diff --git a/resources/lang/lt-LT/reminders.php b/resources/lang/lt-LT/reminders.php index a8a6c3d6d..07a1f2cdd 100644 --- a/resources/lang/lt-LT/reminders.php +++ b/resources/lang/lt-LT/reminders.php @@ -13,7 +13,7 @@ return array( | */ - "password" => "Slaptažodį turi sudaryti bent šeši simboliai ir jie turi sutapti.", + "password" => "Slaptažodis turi būti sudarytas bent iš šešių simbolių ir turi sutapti su patvirtinimu.", "user" => "Neteisingas naudotojo vardas arba el. paštas", "token" => 'Šis slaptažodžio nustatymo iš naujo raktas yra netinkamas, pasibaigęs jo galiojimas arba jis nesutampa su nurodytu naudotojo vardu.', 'sent' => 'Jei mūsų sistemoje yra toks naudotojas su galiojančiu el. pašto adresu, jam buvo išsiųstas laiškas slaptažodžio nustatymui iš naujo.', diff --git a/resources/lang/lt-LT/table.php b/resources/lang/lt-LT/table.php index 836e2acf4..4203d24d8 100644 --- a/resources/lang/lt-LT/table.php +++ b/resources/lang/lt-LT/table.php @@ -5,7 +5,7 @@ return array( 'actions' => 'Veiksmai', 'action' => 'Veiksmas', 'by' => 'Atlikti', - 'item' => 'Įranga', + 'item' => 'Daiktas', 'no_matching_records' => 'Nerasta jokių atitinkančių įrašų', ); diff --git a/resources/lang/lt-LT/validation.php b/resources/lang/lt-LT/validation.php index 40818e45b..04fe22d9c 100644 --- a/resources/lang/lt-LT/validation.php +++ b/resources/lang/lt-LT/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => ':attribute lauke turi būti bent vienas simbolis.', 'uncompromised' => 'Pateiktas :attribute buvo rastas tarp nutekėjusių duomenų. Pasirinkite kitą :attribute.', ], + 'percent' => 'Nusidėvėjimo minimumas turi būti nuo 0 iki 100, kai nusidėvėjimo tipas yra procentinis.', + 'present' => ':attribute laukas turi būti esamas.', 'present_if' => ':attribute laukas turi egzistuoti, kai :other yra :value.', 'present_unless' => ':attribute laukas turi egzistuoti, nebent :other yra :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Jūsų dabartinis slaptažodis yra neteisingas', 'dumbpwd' => 'Šis slaptažodis yra per dažnas.', 'statuslabel_type' => 'Turite pasirinkti tinkamą būsenos žymos tipą', + 'custom_field_not_found' => 'Panašu, kad tokio lauko nėra. Patikrinkite savo pritaikytų laukų pavadinimus.', + 'custom_field_not_found_on_model' => 'Panašu, kad šis laukas egzistuoja, tačiau jo nėra šio turto modelio laukų rinkinyje.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/lv-LV/account/general.php b/resources/lang/lv-LV/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/lv-LV/account/general.php +++ b/resources/lang/lv-LV/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/lv-LV/admin/locations/message.php b/resources/lang/lv-LV/admin/locations/message.php index 136ef3b34..34e368cfa 100644 --- a/resources/lang/lv-LV/admin/locations/message.php +++ b/resources/lang/lv-LV/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Atrašanās vietas neeksistē.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Pašlaik šī atrašanās vieta ir saistīta ar vismaz vienu īpašumu un to nevar izdzēst. Lūdzu, atjauniniet savus aktīvus, lai vairs nerindotu šo atrašanās vietu, un mēģiniet vēlreiz.', 'assoc_child_loc' => 'Pašlaik šī vieta ir vismaz viena bērna atrašanās vieta un to nevar izdzēst. Lūdzu, atjauniniet savas atrašanās vietas, lai vairs nerindotu šo atrašanās vietu, un mēģiniet vēlreiz.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/lv-LV/admin/settings/general.php b/resources/lang/lv-LV/admin/settings/general.php index 28e8018df..7d7de85ab 100644 --- a/resources/lang/lv-LV/admin/settings/general.php +++ b/resources/lang/lv-LV/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT versija', 'support_footer' => 'Atbalsta kājenes saites ', 'support_footer_help' => 'Norādiet, kurš redz saites uz Snipe-IT atbalsta informāciju un lietotāju rokasgrāmatu.', diff --git a/resources/lang/lv-LV/admin/settings/message.php b/resources/lang/lv-LV/admin/settings/message.php index 4004dcbe0..c8a668ecb 100644 --- a/resources/lang/lv-LV/admin/settings/message.php +++ b/resources/lang/lv-LV/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Iztīrīšanas laikā radās kļūda.', 'validation_failed' => 'Jūsu tīrīšanas apstiprinājums nav pareizs. Lūdzu, ierakstiet apstiprinājuma lodziņā vārdu "DELETE".', diff --git a/resources/lang/lv-LV/button.php b/resources/lang/lv-LV/button.php index a288ea35e..67acfef82 100644 --- a/resources/lang/lv-LV/button.php +++ b/resources/lang/lv-LV/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/lv-LV/general.php b/resources/lang/lv-LV/general.php index b0bcb6372..1a1be6016 100644 --- a/resources/lang/lv-LV/general.php +++ b/resources/lang/lv-LV/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Izejmateriāli', 'country' => 'Valsts', 'could_not_restore' => 'Kļūda atjaunojot :item_type: :error', - 'not_deleted' => ':item_type nevar atjaunot, jo tas nav izdzēsts', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Izveidot jaunu', 'created' => 'Izveidots vienums', 'created_asset' => 'izveidots aktīvu', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Šī lietojumprogramma darbojas ražošanas režīmā ar iespējotu atkļūdošanu. Tas var pakļaut sensitīvus datus, ja jūsu pieteikums ir pieejams ārpasauli. Atspējošanas atkļūdošanas režīms, iestatot APP_DEBUG vērtību savam .env failam uz false.', 'delete' => 'Dzēst', 'delete_confirm' => 'Vai tiešām vēlaties dzēst :item?', - 'delete_confirm_no_undo' => 'Vai esat pārliecināti, ka vēlaties dzēst šo :item? Tas būs neatgriezeniski.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Svītrots', 'delete_seats' => 'Izdzēstās vietas', 'deletion_failed' => 'Dzēšana neizdevās', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Uzvārds un vārda pirmais burts (berzinsj@epasts.lv)', 'firstinitial.lastname' => 'Vārds un uzvārds (j.smith@example.com)', 'firstnamelastinitial' => 'Vārds Uzvārds (jane_smith@example.com)', - 'lastnamefirstname' => 'Uzvārds Vārds (ozoliņa.liene@epasts.lv)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Vārds', 'first_name_format' => 'Vārds (jane@example.com)', 'files' => 'Datnes', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Dzēst attēlu', 'include_deleted' => 'Iekļaut Dzēstu Inventāru', 'image_upload' => 'Augšupielādēt attēlu', - 'filetypes_accepted_help' => 'Atļautie failu tipi :types. Maksimālais atļautais failu izmērs :size.|Atļautie failu tipi :types. Maksimālais atļautais failu izmārs :size.', - 'filetypes_size_help' => 'Maksimālais atļautais failu izmērs :size.', - 'image_filetypes_help' => 'Atlautie failu tipi ir: jpg, webp, png, gif, svg, and avif. Maks. augšupielādes lielums ir :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Šis attēls nebija izmantojams. Atļautie failu tipi ir: jpg, webp, png, gif, and svg. Šī faila tips ir :mimetype.', 'import' => 'Importēt', 'import_this_file' => 'Kartējiet laukus un apstrādājiet šo failu', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Pieejamās licences', 'licenses' => 'Licences', 'list_all' => 'Saraksts viss', - 'loading' => 'Ielādēju... lūdzu uzgaidiet...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Šī lauka vērtība netiks saglabāta parauga instalācijā.', 'feature_disabled' => 'Demonstrācijas instalēšanai šī funkcija ir atspējota.', 'location' => 'Atrašanās vieta', @@ -193,7 +193,7 @@ return [ 'logout' => 'Izlogoties', 'lookup_by_tag' => 'Meklēt pēc Asset Tag', 'maintenances' => 'Apkope', - 'manage_api_keys' => 'Pārvaldīt API atslēgas', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Ražotājs', 'manufacturers' => 'Ražotāji', 'markdown' => 'Šajā laukā ir iespējota Github aromatizēta atzīme.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Atlasīt Visu', 'search' => 'Meklēt', 'select_category' => 'Izvēlies kategoriju', - 'select_datasource' => 'Atlasīt Datu avotu', + 'select_datasource' => 'Select a data source', 'select_department' => 'Izvēlieties nodaļu', 'select_depreciation' => 'Atlasiet nolietojuma veidu', 'select_location' => 'Izvēlieties atrašanās vietu', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Izsniedza', 'skin' => 'Dizains', 'webhook_msg_note' => 'Paziņojums tiks nosūtīts ar webhook', - 'webhook_test_msg' => 'Sveiks! Tava :app integrācija ar Snipe-IT darbojas!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: dažas instalācijas funkcijas ir atspējotas.', 'site_name' => 'Vietnes nosaukums', 'state' => 'Valsts', 'status_labels' => 'Statusa etiķetes', + 'status_label' => 'Status Label', 'status' => 'Statuss', 'accept_eula' => 'Pieņemšanas Līgums', 'supplier' => 'Piegādātājs', @@ -339,16 +340,16 @@ return [ 'view_all' => 'skatīt visu', 'hide_deleted' => 'Slēpt Dzēstos', 'email' => 'E-pasts', - 'do_not_change' => 'Nemainīt', - 'bug_report' => 'Ziņot par kļūdu', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Lietotāja rokasgrāmata', 'setup_step_1' => '1. Solis', 'setup_step_2' => '2. Solis', 'setup_step_3' => '3. Solis', 'setup_step_4' => '4. Solis', 'setup_config_check' => 'Konfigurācijas pārbaude', - 'setup_create_database' => 'Izveidot Datubāzes Tabulas', - 'setup_create_admin' => 'Izveidot Admin lietotāju', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Gatavs!', 'bulk_edit_about_to' => 'Jūs tūlīt rediģēsiet sekojošo: ', 'checked_out' => 'Izrakstīts', diff --git a/resources/lang/lv-LV/localizations.php b/resources/lang/lv-LV/localizations.php index 4feb98792..f5662e499 100644 --- a/resources/lang/lv-LV/localizations.php +++ b/resources/lang/lv-LV/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/lv-LV/validation.php b/resources/lang/lv-LV/validation.php index c13647142..acdd48629 100644 --- a/resources/lang/lv-LV/validation.php +++ b/resources/lang/lv-LV/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Atribūta laukam jābūt klāt.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Jūsu pašreizējā parole nav pareiza', 'dumbpwd' => 'Šī parole ir pārāk izplatīta.', 'statuslabel_type' => 'Jums ir jāizvēlas derīgs statusa etiķetes veids', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/mi-NZ/account/general.php b/resources/lang/mi-NZ/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/mi-NZ/account/general.php +++ b/resources/lang/mi-NZ/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/mi-NZ/admin/locations/message.php b/resources/lang/mi-NZ/admin/locations/message.php index c35cfa531..8f50e9a24 100644 --- a/resources/lang/mi-NZ/admin/locations/message.php +++ b/resources/lang/mi-NZ/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Kāore i te tīariari te wāhi.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Kei te honohia tenei taapiri ki te iti rawa o te rawa me te kore e taea te muku. Whakaorangia nga taonga ki a koe kia kaua e tautuhi i tenei tauranga ka ngana ano.', 'assoc_child_loc' => 'Kei tenei waahi te matua o te iti rawa o te mokopuna me te kore e taea te muku. Whakaorangia nga taangata ki a koe kia kaua e tautuhi i tenei tauranga ka ngana ano.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/mi-NZ/admin/settings/general.php b/resources/lang/mi-NZ/admin/settings/general.php index af2985c3e..0d07401c2 100644 --- a/resources/lang/mi-NZ/admin/settings/general.php +++ b/resources/lang/mi-NZ/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Whakaaetanga-IT putanga', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/mi-NZ/admin/settings/message.php b/resources/lang/mi-NZ/admin/settings/message.php index cadcb6128..93cb7d867 100644 --- a/resources/lang/mi-NZ/admin/settings/message.php +++ b/resources/lang/mi-NZ/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Kua puta he hapa i te wa e purea ana.', 'validation_failed' => 'He hē te whakauru o te purge. Tena koa tuhia te kupu "MOTORI" i roto i te pouaka whakauru.', diff --git a/resources/lang/mi-NZ/button.php b/resources/lang/mi-NZ/button.php index 38152826b..37df4452c 100644 --- a/resources/lang/mi-NZ/button.php +++ b/resources/lang/mi-NZ/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/mi-NZ/general.php b/resources/lang/mi-NZ/general.php index ce2afa6ad..071935c6e 100644 --- a/resources/lang/mi-NZ/general.php +++ b/resources/lang/mi-NZ/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Ngā whakamahinga', 'country' => 'Whenua', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Waihanga Hou', 'created' => 'Kua waihangatia te Mea', 'created_asset' => 'waihanga i te taonga', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ko tenei tono kei te whakahaere i te mahinga whakaputa me te taraiwa kua whakahohea. Ka taea e tenei te whakaatu i nga raraunga taarata mehemea ka uru atu to tono ki te ao o waho. Monokia te aratau taapatu mā te whakarite i te uara APP_DEBUG123_7____132 i roto i to kōnae .env ki false.', 'delete' => 'Mukua', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Kua mukua', 'delete_seats' => 'Kua mukua nga Maatai', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ingoa Tuatahi', 'first_name_format' => 'Ingoa Tuatahi (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Mukua te Whakaahua', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Tukuna Whakaahua', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Kawemai', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Raihana', 'list_all' => 'Rārangi Katoa', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Kua monokia tenei ahuatanga mo te tautuhinga whakaatu.', 'location' => 'Wāhi', @@ -193,7 +193,7 @@ return [ 'logout' => 'Whakaaturanga', 'lookup_by_tag' => 'Te tirotiro i te Tohu Taonga', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Kaihanga', 'manufacturers' => 'Kaihanga', 'markdown' => 'Ka whakaaetia e tenei maraa Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Rapua', 'select_category' => 'Tīpakohia he Kāwai', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Tīpakohia he Tari', 'select_depreciation' => 'Tīpakohia te Momo Utu', 'select_location' => 'Tīpakohia he Tauwāhi', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'TE WHAKAMAHI MĀTAURANGA: Kua monokia ētahi āhuatanga mo tenei tāutanga me te raraunga i tenei pūnaha ka tautuhi i ia ra.', 'site_name' => 'Ingoa Pae', 'state' => 'State', 'status_labels' => 'Ngā Tapanga Tūnga', + 'status_label' => 'Status Label', 'status' => 'Tūnga', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Kaihoko', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Īmēra', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Kua Mataarahia', diff --git a/resources/lang/mi-NZ/localizations.php b/resources/lang/mi-NZ/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/mi-NZ/localizations.php +++ b/resources/lang/mi-NZ/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/mi-NZ/validation.php b/resources/lang/mi-NZ/validation.php index 6417ae8b3..a7d5ed47d 100644 --- a/resources/lang/mi-NZ/validation.php +++ b/resources/lang/mi-NZ/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Ko te: ko te waahi tohu kia noho.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'He hē tō kupuhipa o nāianei', 'dumbpwd' => 'He noa rawa te kupuhipa.', 'statuslabel_type' => 'Me tīpako i te momo tahua tohu whaimana', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/mk-MK/account/general.php b/resources/lang/mk-MK/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/mk-MK/account/general.php +++ b/resources/lang/mk-MK/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/mk-MK/admin/locations/message.php b/resources/lang/mk-MK/admin/locations/message.php index c85ffb244..92e16a81e 100644 --- a/resources/lang/mk-MK/admin/locations/message.php +++ b/resources/lang/mk-MK/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Локацијата не постои.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Оваа локација моментално е поврзана со барем едно основно средство и не може да се избрише. Ве молиме да ги ажурирате вашите основни средства за да не ја користите оваа локација и обидете се повторно. ', 'assoc_child_loc' => 'Оваа локација моментално е родител на најмалку една локација и не може да се избрише. Ве молиме да ги ажурирате вашите локации повеќе да не ја користат оваа локација како родител и обидете се повторно. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/mk-MK/admin/settings/general.php b/resources/lang/mk-MK/admin/settings/general.php index b779ade2a..41a98c6ce 100644 --- a/resources/lang/mk-MK/admin/settings/general.php +++ b/resources/lang/mk-MK/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/mk-MK/admin/settings/message.php b/resources/lang/mk-MK/admin/settings/message.php index 2c5d28220..854096bec 100644 --- a/resources/lang/mk-MK/admin/settings/message.php +++ b/resources/lang/mk-MK/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Се случи грешка при трајното бришење. ', 'validation_failed' => 'Потврдата за трајно бришење е неточна. Внесете го зборот "DELETE" во полето за потврда.', diff --git a/resources/lang/mk-MK/button.php b/resources/lang/mk-MK/button.php index d2a19916b..c6caa2d48 100644 --- a/resources/lang/mk-MK/button.php +++ b/resources/lang/mk-MK/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/mk-MK/general.php b/resources/lang/mk-MK/general.php index 87d35aeb8..c924fe3f8 100644 --- a/resources/lang/mk-MK/general.php +++ b/resources/lang/mk-MK/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Потрошен материјал', 'country' => 'Држава', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Креирај Нов {0}', 'created' => 'Креирана ставка', 'created_asset' => 'креирано основно средство', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Оваа апликација работи во режим на производство со овозможено дебагирање. Ова може да изложи чувствителните податоци доколку вашата апликација е достапна за надворешниот свет. Оневозможете го дебагирачкиот режим со поставување на APP_DEBUG во вашата .env датотека на false.', 'delete' => 'Избриши', 'delete_confirm' => 'Дали сте сигурни дека сакате да избришете: ставка?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Избришани', 'delete_seats' => 'Избришани места', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Име', 'first_name_format' => 'Име (janko@example.com)', 'files' => 'Датотеки', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Избриши ја сликата', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Поставете слика', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Увоз', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Лиценци', 'list_all' => 'Листа на сите', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Оваа функција е оневозможена за демонстрационата инсталација.', 'location' => 'Локација', @@ -193,7 +193,7 @@ return [ 'logout' => 'Одјави се', 'lookup_by_tag' => 'Пребарување по код на основно средство', 'maintenances' => 'Одржувања', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Производител', 'manufacturers' => 'Производители', 'markdown' => 'Ова поле прифаќа означување според Github.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Пребарај', 'select_category' => 'Одбери категорија', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Изберете оддел', 'select_depreciation' => 'Изберете тип на амортизација', 'select_location' => 'Изберете локација', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Кожа', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Некои функции се оневозможени за оваа инсталација.', 'site_name' => 'Име на сајтот', 'state' => 'Состојба', 'status_labels' => 'Етикети со статус', + 'status_label' => 'Status Label', 'status' => 'Статус', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Добавувач', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Е-пошта', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Задолжен на', diff --git a/resources/lang/mk-MK/localizations.php b/resources/lang/mk-MK/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/mk-MK/localizations.php +++ b/resources/lang/mk-MK/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/mk-MK/validation.php b/resources/lang/mk-MK/validation.php index 258c77c3f..2ba7a9d26 100644 --- a/resources/lang/mk-MK/validation.php +++ b/resources/lang/mk-MK/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Полето :attribute е задолжително.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Вашата тековна лозинка е неточна', 'dumbpwd' => 'Таа лозинка е премногу честа.', 'statuslabel_type' => 'Мора да изберете валидна етикета за статус', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ml-IN/account/general.php b/resources/lang/ml-IN/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ml-IN/account/general.php +++ b/resources/lang/ml-IN/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ml-IN/admin/locations/message.php b/resources/lang/ml-IN/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/ml-IN/admin/locations/message.php +++ b/resources/lang/ml-IN/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ml-IN/admin/settings/general.php b/resources/lang/ml-IN/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/ml-IN/admin/settings/general.php +++ b/resources/lang/ml-IN/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/ml-IN/admin/settings/message.php b/resources/lang/ml-IN/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/ml-IN/admin/settings/message.php +++ b/resources/lang/ml-IN/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/ml-IN/button.php b/resources/lang/ml-IN/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/ml-IN/button.php +++ b/resources/lang/ml-IN/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ml-IN/general.php b/resources/lang/ml-IN/general.php index b4b643076..2a1e63549 100644 --- a/resources/lang/ml-IN/general.php +++ b/resources/lang/ml-IN/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'രാജ്യം', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'സംസ്ഥാനം', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/ml-IN/localizations.php b/resources/lang/ml-IN/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/ml-IN/localizations.php +++ b/resources/lang/ml-IN/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ml-IN/validation.php b/resources/lang/ml-IN/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/ml-IN/validation.php +++ b/resources/lang/ml-IN/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/mn-MN/account/general.php b/resources/lang/mn-MN/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/mn-MN/account/general.php +++ b/resources/lang/mn-MN/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/mn-MN/admin/locations/message.php b/resources/lang/mn-MN/admin/locations/message.php index e69e94bad..f9d0f2919 100644 --- a/resources/lang/mn-MN/admin/locations/message.php +++ b/resources/lang/mn-MN/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Байршил байхгүй байна.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Энэ байршил нь одоогоор нэгээс доошгүй активтай холбоотой бөгөөд устгах боломжгүй байна. Энэ байршлыг лавлагаа болгохоо болихын тулд өөрийн хөрөнгийг шинэчлээд дахин оролдоно уу.', 'assoc_child_loc' => 'Энэ байршил нь одоогоор хамгийн багадаа нэг хүүхдийн байрлалын эцэг эх бөгөөд устгах боломжгүй байна. Энэ байршлыг лавшруулахгүй болгохын тулд байршлаа шинэчлээд дахин оролдоно уу.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/mn-MN/admin/settings/general.php b/resources/lang/mn-MN/admin/settings/general.php index d9761f279..b37dcc496 100644 --- a/resources/lang/mn-MN/admin/settings/general.php +++ b/resources/lang/mn-MN/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT хувилбар', 'support_footer' => 'Хөл хэсэг дэх холбоосууд ', 'support_footer_help' => 'Snipe-IT Support мэдээлэл ба хэрэглэгчийн гарын авлагын холбоосыг хэн харж болохыг заах өгөх', diff --git a/resources/lang/mn-MN/admin/settings/message.php b/resources/lang/mn-MN/admin/settings/message.php index 8a18e5d07..5546af13b 100644 --- a/resources/lang/mn-MN/admin/settings/message.php +++ b/resources/lang/mn-MN/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Цэвэрлэх явцад алдаа гарлаа.', 'validation_failed' => 'Таны таслалтын баталгаа буруу байна. Баталгаажуулалтын хайрцагт "DELETE" үгийг оруулна уу.', diff --git a/resources/lang/mn-MN/button.php b/resources/lang/mn-MN/button.php index 50d3b99a1..262861994 100644 --- a/resources/lang/mn-MN/button.php +++ b/resources/lang/mn-MN/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/mn-MN/general.php b/resources/lang/mn-MN/general.php index 09b1e1c47..7ee5cb212 100644 --- a/resources/lang/mn-MN/general.php +++ b/resources/lang/mn-MN/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Хэрэглээ', 'country' => 'Улс', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Шинэ болгох', 'created' => 'Үүссэн зүйл', 'created_asset' => 'актив үүсгэсэн', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Энэ програм нь дибаг хийх боломжтойгоор үйлдвэрлэлийн горимд ажиллаж байна. Хэрэв таны хэрэглээ гаднах ертөнцөд хүртээмжтэй бол эмзэг өгөгдлийг илтгэнэ. APP_DEBUG утгыг өөрийн .env файлыг false руу тохируулах замаар дибаг хийх горимыг идэвхгүй болгох.', 'delete' => 'Устгах', 'delete_confirm' => 'Та :item устгахыг хүсч байгаадаа итгэлтэй байна уу?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Устгагдсан', 'delete_seats' => 'Устгагдсан суудал', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Нэр', 'first_name_format' => 'Эхний нэр (jane@example.com)', 'files' => 'Файлууд', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Зураг устгах', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Зургийн байршуулалт', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Импорт', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Лицензүүд', 'list_all' => 'Бүгдийг жагсаах', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Демо суулгацын энэ онцлогийг идэвхгүй болгосон байна.', 'location' => 'Байршил', @@ -193,7 +193,7 @@ return [ 'logout' => 'Гарах', 'lookup_by_tag' => 'Хөрөнгийн Tagаар хайх', 'maintenances' => 'Засвар үйлчилгээ', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Үйлдвэрлэгч', 'manufacturers' => 'Үйлдвэрлэгчид', 'markdown' => 'Энэ талбар нь Гитуб амттай markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Хайлт', 'select_category' => 'Ангилал сонго', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Департамент сонгоно уу', 'select_depreciation' => 'Элэгдэлийн төрлийг сонгоно уу', 'select_location' => 'Байршлыг сонгоно уу', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Гадарга', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Энэ суулгацад зарим функцууд хаагдсан байна.', 'site_name' => 'Сайтын нэр', 'state' => 'Улс', 'status_labels' => 'Статусын шошго', + 'status_label' => 'Status Label', 'status' => 'Статус', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Нийлүүлэгч', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'И-мэйл хаяг', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Нь шалгаж', diff --git a/resources/lang/mn-MN/localizations.php b/resources/lang/mn-MN/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/mn-MN/localizations.php +++ b/resources/lang/mn-MN/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/mn-MN/validation.php b/resources/lang/mn-MN/validation.php index 01b9e5e41..67d02554c 100644 --- a/resources/lang/mn-MN/validation.php +++ b/resources/lang/mn-MN/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Үүнд: атрибутын талбар байх ёстой.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Таны одоогийн нууц үг буруу байна', 'dumbpwd' => 'Энэ нууц үг хэтэрхий нийтлэг байна.', 'statuslabel_type' => 'Та зөв статустай шошгын төрлийг сонгох ёстой', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ms-MY/account/general.php b/resources/lang/ms-MY/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ms-MY/account/general.php +++ b/resources/lang/ms-MY/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ms-MY/admin/locations/message.php b/resources/lang/ms-MY/admin/locations/message.php index afd8501df..5726d0634 100644 --- a/resources/lang/ms-MY/admin/locations/message.php +++ b/resources/lang/ms-MY/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokasi tidak wujud.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Lokasi ini kini dikaitkan dengan sekurang-kurangnya satu aset dan tidak boleh dihapuskan. Sila kemas kini aset anda untuk tidak merujuk lagi lokasi ini dan cuba lagi.', 'assoc_child_loc' => 'Lokasi ini adalah ibu bapa sekurang-kurangnya satu lokasi kanak-kanak dan tidak boleh dipadamkan. Sila kemas kini lokasi anda untuk tidak merujuk lokasi ini lagi dan cuba lagi.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ms-MY/admin/settings/general.php b/resources/lang/ms-MY/admin/settings/general.php index 740a658d7..1c901f8a8 100644 --- a/resources/lang/ms-MY/admin/settings/general.php +++ b/resources/lang/ms-MY/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Versi Snipe-IT', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/ms-MY/admin/settings/message.php b/resources/lang/ms-MY/admin/settings/message.php index 43368b631..07e15cf5d 100644 --- a/resources/lang/ms-MY/admin/settings/message.php +++ b/resources/lang/ms-MY/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Ralat telah berlaku semasa pembersihan.', 'validation_failed' => 'Pengesahan pembersihan anda tidak betul. Sila taip perkataan "DELETE" dalam kotak pengesahan.', diff --git a/resources/lang/ms-MY/button.php b/resources/lang/ms-MY/button.php index fb63e739b..73737614d 100644 --- a/resources/lang/ms-MY/button.php +++ b/resources/lang/ms-MY/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ms-MY/general.php b/resources/lang/ms-MY/general.php index 4455c98fd..e58b94d1e 100644 --- a/resources/lang/ms-MY/general.php +++ b/resources/lang/ms-MY/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Makanan yang boleh dimakan', 'country' => 'Negara', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Cipta Baru', 'created' => 'Perkara yang Dibuat', 'created_asset' => 'cipta harta', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Aplikasi ini berjalan dalam mod pengeluaran dengan debug membolehkan. Ini boleh mendedahkan data sensitif jika aplikasi anda boleh diakses oleh dunia luar. Lumpuhkan mod debug dengan menetapkan APP_DEBUG nilai dalam fail .env anda ke false.', 'delete' => 'Hapuskan', 'delete_confirm' => 'Adakah anda pasti ingin memadamkan :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Dihapuskan', 'delete_seats' => 'Kerusi dipadamkan', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Nama pertama', 'first_name_format' => 'Nama Pertama (jane@example.com)', 'files' => 'Fail-fail', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Hapuskan imej', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Muat naik imej', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Lesen', 'list_all' => 'Senaraikan Semua', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Ciri ini telah dilumpuhkan untuk pemasangan demo.', 'location' => 'Lokasi', @@ -193,7 +193,7 @@ return [ 'logout' => 'Log keluar', 'lookup_by_tag' => 'Cari dengan Tag Aset', 'maintenances' => 'Penyelenggaraan', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Pengeluar', 'manufacturers' => 'Pengeluar', 'markdown' => 'Bidang ini membolehkan markah rasa Github.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Carian', 'select_category' => 'Pilih kategori', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Pilih Jabatan', 'select_depreciation' => 'Pilih Jenis Susutnilai', 'select_location' => 'Pilih Lokasi', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Kulit', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'MODEM DEMO: Sesetengah ciri dilumpuhkan untuk pemasangan ini.', 'site_name' => 'Nama Sesawang', 'state' => 'Negeri', 'status_labels' => 'Label Status', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Pembekal', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'E-mel', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Agihan Keluar', diff --git a/resources/lang/ms-MY/localizations.php b/resources/lang/ms-MY/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/ms-MY/localizations.php +++ b/resources/lang/ms-MY/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ms-MY/validation.php b/resources/lang/ms-MY/validation.php index 28d2a7791..082e8b997 100644 --- a/resources/lang/ms-MY/validation.php +++ b/resources/lang/ms-MY/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Yang: bidang atribut mesti ada.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Kata laluan semasa anda tidak betul', 'dumbpwd' => 'Kata laluan itu terlalu umum.', 'statuslabel_type' => 'Anda mesti memilih jenis label status yang sah', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/nb-NO/account/general.php b/resources/lang/nb-NO/account/general.php index 9a4242971..99da024c8 100644 --- a/resources/lang/nb-NO/account/general.php +++ b/resources/lang/nb-NO/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/nb-NO/admin/locations/message.php b/resources/lang/nb-NO/admin/locations/message.php index 1f5840ba4..cd124690a 100644 --- a/resources/lang/nb-NO/admin/locations/message.php +++ b/resources/lang/nb-NO/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokasjon eksisterer ikke.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Lokasjonen er tilknyttet minst en eiendel og kan ikke slettes. Oppdater dine eiendeler slik at de ikke refererer til denne lokasjonen, og prøv igjen. ', 'assoc_child_loc' => 'Lokasjonen er overordnet til minst en underlokasjon og kan ikke slettes. Oppdater din lokasjoner til å ikke referere til denne lokasjonen, og prøv igjen. ', 'assigned_assets' => 'Tildelte ressurser', diff --git a/resources/lang/nb-NO/admin/settings/general.php b/resources/lang/nb-NO/admin/settings/general.php index d635f260f..36604fa93 100644 --- a/resources/lang/nb-NO/admin/settings/general.php +++ b/resources/lang/nb-NO/admin/settings/general.php @@ -219,6 +219,8 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'webhook_integration_help' => ':app-integrasjon er valgfritt, men endepunktet og kanalen er påkrevd hvis du ønsker å bruke den. For å konfigurere :app integrering, må du først lage en innkommende webhook på din :app konto. Klikk på knappen Test :app Integrasjon for å bekrefte at innstillingene er korrekte før du lagrer. ', 'webhook_integration_help_button' => 'Du vil se en testknapp etter at du har lagret din :app informasjon.', 'webhook_test_help' => 'Test om din :app integrasjon er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE :app INNSTILLINGER FØRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT-versjon', 'support_footer' => 'Støtte Footer Lenker ', 'support_footer_help' => 'Angi hvem som kan se lenker til Snipe-IT supportinformasjon og brukermanual', diff --git a/resources/lang/nb-NO/admin/settings/message.php b/resources/lang/nb-NO/admin/settings/message.php index 42d29371f..04ab7973b 100644 --- a/resources/lang/nb-NO/admin/settings/message.php +++ b/resources/lang/nb-NO/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, kjør gjenoppretting. Jeg forstår at dette vil overskive alle eksisterende data som er i databasen. Dette vil også logge ut alle eksisterende brukere (inkludert meg selv).', 'restore_confirm' => 'Er du sikker på at du vil gjenopprette databasen fra :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Det oppstod en feil under fjerning. ', 'validation_failed' => 'Din fjerningsbekreftelse er feil. Vennligst skriv inn ordet "DELETE" i bekreftelsesboksen.', diff --git a/resources/lang/nb-NO/button.php b/resources/lang/nb-NO/button.php index d68f89a77..6a9e0b866 100644 --- a/resources/lang/nb-NO/button.php +++ b/resources/lang/nb-NO/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/nb-NO/general.php b/resources/lang/nb-NO/general.php index 9c70d97a1..69cfbec23 100644 --- a/resources/lang/nb-NO/general.php +++ b/resources/lang/nb-NO/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Forbruksvarer', 'country' => 'Land', 'could_not_restore' => 'Feil ved gjenoppretting av :item_type: :error', - 'not_deleted' => ':item_type er ikke slettet og kan ikke gjenopprettes', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Opprett ny', 'created' => 'Enhet opprettet', 'created_asset' => 'eiendel opprettet', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Dette programmet kjører i produksjonsmodus med feilsøking aktiverert. Dette kan utsette følsomme data hvis programmet er tilgjengelig for omverdenen. Deaktiver debug modus ved å sette APP_DEBUG-verdien i filen .env til false.', 'delete' => 'Slett', 'delete_confirm' => 'Er du sikker på at du vil slette :item?', - 'delete_confirm_no_undo' => 'Er du sikker på at du vil slette :item? Dette kan ikke angres.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Slettet', 'delete_seats' => 'Slettede setelisenser', 'deletion_failed' => 'Sletting mislyktes', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Etternavn Fornavn Initialer (smith_j@example.com)', 'firstinitial.lastname' => 'Fornavn Initialer Etternavn (j.smith@example.com)', 'firstnamelastinitial' => 'Fornavn Etternavn Initialer (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Fornavn', 'first_name_format' => 'Fornavn (oladunk@example.com)', 'files' => 'Filer', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Slett bilde', 'include_deleted' => 'Inkluder slettede ressurser', 'image_upload' => 'Last opp bilde', - 'filetypes_accepted_help' => 'Godkjent filtype er :types. Maks opplastingsstørrelse er :size.|Aksepterte filtyper er :types. Maks opplastingsstørrelse er :size.', - 'filetypes_size_help' => 'Maks opplastingsstørrelse er :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Denne bildefilen var ikke lesbar. Aksepterte filtyper er jpg, webp, png, gif og svg. Mime-typen til denne filen er :mimetype.', 'import' => 'Importer', 'import_this_file' => 'Kartfelter og behandle denne filen', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Tilgjengelige lisenser', 'licenses' => 'Lisenser', 'list_all' => 'List alle', - 'loading' => 'Laster... vennligst vent....', + 'loading' => 'Laster... vennligst vent...', 'lock_passwords' => 'Denne feltverdien vil ikke bli lagret i en demo-installasjon.', 'feature_disabled' => 'Denne funksjonen er deaktivert i demo-installasjonen.', 'location' => 'Lokasjon', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logg ut', 'lookup_by_tag' => 'Søk på ID-merke', 'maintenances' => 'Vedlikehold', - 'manage_api_keys' => 'Administrer API-nøkler', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Produsent', 'manufacturers' => 'Produsenter', 'markdown' => 'Dette feltet tillater Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Velg alle', 'search' => 'Søk', 'select_category' => 'Velg en kategori', - 'select_datasource' => 'Velg en datakilde', + 'select_datasource' => 'Select a data source', 'select_department' => 'Velg en avdeling', 'select_depreciation' => 'Velg en avskrivningstype', 'select_location' => 'Velg en lokasjon', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Godkjent av', 'skin' => 'Tema', 'webhook_msg_note' => 'En varsling vil bli sendt via webhook', - 'webhook_test_msg' => 'Hei-hå! Ser som din Slack-integrasjon med Snipe-IT fungerer!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODUS: Noe funksjonalitet er skrudd av i denne installasjonen.', 'site_name' => 'Nettstedsnavn', 'state' => 'Stat', 'status_labels' => 'Statusmerker', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Akseptavtale', 'supplier' => 'Leverandør', @@ -339,16 +340,16 @@ return [ 'view_all' => 'se alle', 'hide_deleted' => 'Skjul slettede', 'email' => 'E-post', - 'do_not_change' => 'Ikke endre', - 'bug_report' => 'Rapporter feil', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Brukerhåndbok', 'setup_step_1' => 'Trinn 1', 'setup_step_2' => 'Trinn 2', 'setup_step_3' => 'Trinn 3', 'setup_step_4' => 'Trinn 4', 'setup_config_check' => 'Sjekk konfigurasjon', - 'setup_create_database' => 'Opprett databasetabeller', - 'setup_create_admin' => 'Opprett adminbruker', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Ferdig!', 'bulk_edit_about_to' => 'Du er i ferd med å redigere følgende: ', 'checked_out' => 'Sjekket ut', diff --git a/resources/lang/nb-NO/localizations.php b/resources/lang/nb-NO/localizations.php index cacfe7096..354be751b 100644 --- a/resources/lang/nb-NO/localizations.php +++ b/resources/lang/nb-NO/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayisk', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolsk', - 'no-NO'=> 'Norsk', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persisk', 'pl-PL'=> 'Polsk', 'pt-PT'=> 'Portugisisk', diff --git a/resources/lang/nb-NO/validation.php b/resources/lang/nb-NO/validation.php index 6f0c98576..ef4034d0b 100644 --- a/resources/lang/nb-NO/validation.php +++ b/resources/lang/nb-NO/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Atributtfeltet :attribute må ha en verdi.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Gjeldende passord er feil', 'dumbpwd' => 'Passordet er for vanlig.', 'statuslabel_type' => 'Du må velge en gyldig statusetikett-type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/nl-NL/account/general.php b/resources/lang/nl-NL/account/general.php index e2e021297..3fb4862ad 100644 --- a/resources/lang/nl-NL/account/general.php +++ b/resources/lang/nl-NL/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/nl-NL/admin/locations/message.php b/resources/lang/nl-NL/admin/locations/message.php index 471c641f0..b9760350d 100644 --- a/resources/lang/nl-NL/admin/locations/message.php +++ b/resources/lang/nl-NL/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Locatie bestaat niet.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Deze locatie is momenteel gekoppeld met tenminste één asset en kan hierdoor niet worden verwijderd. Update je assets die niet meer bij deze locatie en probeer het opnieuw. ', 'assoc_child_loc' => 'Deze locatie is momenteen de ouder van ten minste één kind locatie en kan hierdoor niet worden verwijderd. Update je locaties bij die niet meer naar deze locatie verwijzen en probeer het opnieuw. ', 'assigned_assets' => 'Toegewezen activa', diff --git a/resources/lang/nl-NL/admin/settings/general.php b/resources/lang/nl-NL/admin/settings/general.php index 9f3ce16f6..671b0e931 100644 --- a/resources/lang/nl-NL/admin/settings/general.php +++ b/resources/lang/nl-NL/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integratie is optioneel, maar het eindpunt en kanaal zijn vereist als je het wilt gebruiken. Om :app integratie te configureren, moet je eerst een inkomende webhook maken op je :app account. Klik op de knop Test :app Integration om te bevestigen dat je instellingen correct zijn voordat je ze opslaat. ', 'webhook_integration_help_button' => 'Zodra je :app informatie hebt opgeslagen, verschijnt er een testknop.', 'webhook_test_help' => 'Test of je :app integratie correct is geconfigureerd. JE MOET EERST DE AANGEPASTE :app INSTELLINGEN OPSLAAN.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT Versie', 'support_footer' => 'Ondersteuningsvoettekst links ', 'support_footer_help' => 'Geef aan wie de links naar de Snipe-IT-ondersteuningsinformatie en gebruikershandleiding ziet', diff --git a/resources/lang/nl-NL/admin/settings/message.php b/resources/lang/nl-NL/admin/settings/message.php index a07cd34f8..c1eca86cd 100644 --- a/resources/lang/nl-NL/admin/settings/message.php +++ b/resources/lang/nl-NL/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, herstellen. Ik bevestig dat dit alle bestaande gegevens die momenteel in de database aanwezig zijn, overschreven worden. Dit zal ook alle bestaande gebruikers uitloggen (inclusief jijzelf).', 'restore_confirm' => 'Weet je zeker dat je je database wilt herstellen met :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Er is iets fout gegaan tijdens het opschonen.', 'validation_failed' => 'De opschoon bevestiging is niet correct. Typ het woord "DELETE" in het bevestigingsveld.', diff --git a/resources/lang/nl-NL/button.php b/resources/lang/nl-NL/button.php index 918f9db21..64f0f9fae 100644 --- a/resources/lang/nl-NL/button.php +++ b/resources/lang/nl-NL/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/nl-NL/general.php b/resources/lang/nl-NL/general.php index 08eabcac5..17296afff 100644 --- a/resources/lang/nl-NL/general.php +++ b/resources/lang/nl-NL/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Verbruiksartikelen', 'country' => 'Land', 'could_not_restore' => 'Fout herstellen :item_type: :error', - 'not_deleted' => 'De :item_type is niet verwijderd, het kan niet worden hersteld', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Nieuwe aanmaken', 'created' => 'Item aangemaakt', 'created_asset' => 'aangemaakt asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Deze applicatie draait in productie modus met foutopsporing ingeschakeld. Dit kan betekenen dat mogelijk gevoelige gegevens zichtbaar zijn voor de buitenwereld. Schakel foutopsporing uit door de APP_DEBUG variabele in je .env bestand op false te zetten.', 'delete' => 'Verwijder', 'delete_confirm' => 'Weet u zeker dat u :item wilt verwijderen?', - 'delete_confirm_no_undo' => 'Weet je zeker dat je :item wilt verwijderen? Dit kan niet ongedaan gemaakt worden.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Verwijderd', 'delete_seats' => 'Verwijderde plekken', 'deletion_failed' => 'Verwijderen mislukt', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Achternaam eerste initiaal (smith_j@example.com)', 'firstinitial.lastname' => 'Eerste initiaal achternaam (j.smith@example.com)', 'firstnamelastinitial' => 'Voornaam Initiaal Achternaam (janes@voorbeeld.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Voornaam', 'first_name_format' => 'Voornaam (jane@example.com)', 'files' => 'Bestanden', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Afbeelding verwijderen', 'include_deleted' => 'Verwijderde activa opnemen', 'image_upload' => 'Afbeelding uploaden', - 'filetypes_accepted_help' => 'Geaccepteerde bestandstype is :types. Maximale toegestane uploadgrootte is :size.|Geaccepteerde bestandstypen zijn :types. Maximale uploadgrootte is :size.', - 'filetypes_size_help' => 'Maximale toegestane uploadgrootte is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Dit afbeeldingsbestand is niet leesbaar. Geaccepteerde bestandstypen zijn jpg, webp, png, gif en svg. Het mimetype van dit bestand is: :mimetype.', 'import' => 'Importeer', 'import_this_file' => 'Kaart velden en verwerk dit bestand', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Beschikbare licenties', 'licenses' => 'Licenties', 'list_all' => 'Toon Alles', - 'loading' => 'Laden... even geduld....', + 'loading' => 'Laden... even geduld...', 'lock_passwords' => 'Dit veld zal niet worden opgeslagen in een demo installatie.', 'feature_disabled' => 'Deze functionaliteit is uitgeschakeld voor de demonstratie installatie.', 'location' => 'Locatie', @@ -193,7 +193,7 @@ return [ 'logout' => 'Afmelden', 'lookup_by_tag' => 'Opzoeken via Asset tag', 'maintenances' => 'Onderhoudsbeurten', - 'manage_api_keys' => 'API-sleutels beheren', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Fabrikant', 'manufacturers' => 'Fabrikanten', 'markdown' => 'Dit veld staat Github markdown gebruik toe.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Alles selecteren', 'search' => 'Zoeken', 'select_category' => 'Selecteer een categorie', - 'select_datasource' => 'Selecteer een bron', + 'select_datasource' => 'Select a data source', 'select_department' => 'Selecteer de afdeling', 'select_depreciation' => 'Selecteer een afschrijvingstype', 'select_location' => 'Selecteer een locatie', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Afgetekend door', 'skin' => 'Thema', 'webhook_msg_note' => 'Er wordt een melding verzonden via webhook', - 'webhook_test_msg' => 'Oh hai! Het lijkt erop dat jouw :app integratie met Snipe-IT werkt!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODUS: Sommige functies zijn uitgeschakeld voor deze installatie.', 'site_name' => 'Sitenaam', 'state' => 'Status', 'status_labels' => 'Statuslabels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Aanvaarding overeenkomst', 'supplier' => 'Leverancier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'alles weergeven', 'hide_deleted' => 'Verberg verwijderde', 'email' => 'E-mailadres', - 'do_not_change' => 'Niet wijzigen', - 'bug_report' => 'Een fout melden', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Gebruiker\'s Handleiding', 'setup_step_1' => 'Stap 1', 'setup_step_2' => 'Stap 2', 'setup_step_3' => 'Stap 3', 'setup_step_4' => 'Stap 4', 'setup_config_check' => 'Configuratie Controle', - 'setup_create_database' => 'Database tabellen aanmaken', - 'setup_create_admin' => 'Maak beheerder aan', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Klaar!', 'bulk_edit_about_to' => 'Je staat op het punt om het volgende te bewerken: ', 'checked_out' => 'Uitgecheckt', diff --git a/resources/lang/nl-NL/localizations.php b/resources/lang/nl-NL/localizations.php index 0af43adbc..95ae96166 100644 --- a/resources/lang/nl-NL/localizations.php +++ b/resources/lang/nl-NL/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Maleis', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongools', - 'no-NO'=> 'Noors', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Perzisch', 'pl-PL'=> 'Pools', 'pt-PT'=> 'Portugees', diff --git a/resources/lang/nl-NL/validation.php b/resources/lang/nl-NL/validation.php index dfd703eba..783cf9df1 100644 --- a/resources/lang/nl-NL/validation.php +++ b/resources/lang/nl-NL/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':attribute veld moet aanwezig zijn.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Je huidige wachtwoord is incorrect', 'dumbpwd' => 'Dat wachtwoord is te veelvoorkomend.', 'statuslabel_type' => 'Selecteer een valide status label', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/nn-NO/account/general.php b/resources/lang/nn-NO/account/general.php index 9a4242971..99da024c8 100644 --- a/resources/lang/nn-NO/account/general.php +++ b/resources/lang/nn-NO/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/nn-NO/admin/locations/message.php b/resources/lang/nn-NO/admin/locations/message.php index 1f5840ba4..cd124690a 100644 --- a/resources/lang/nn-NO/admin/locations/message.php +++ b/resources/lang/nn-NO/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokasjon eksisterer ikke.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Lokasjonen er tilknyttet minst en eiendel og kan ikke slettes. Oppdater dine eiendeler slik at de ikke refererer til denne lokasjonen, og prøv igjen. ', 'assoc_child_loc' => 'Lokasjonen er overordnet til minst en underlokasjon og kan ikke slettes. Oppdater din lokasjoner til å ikke referere til denne lokasjonen, og prøv igjen. ', 'assigned_assets' => 'Tildelte ressurser', diff --git a/resources/lang/nn-NO/admin/settings/general.php b/resources/lang/nn-NO/admin/settings/general.php index d635f260f..36604fa93 100644 --- a/resources/lang/nn-NO/admin/settings/general.php +++ b/resources/lang/nn-NO/admin/settings/general.php @@ -219,6 +219,8 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'webhook_integration_help' => ':app-integrasjon er valgfritt, men endepunktet og kanalen er påkrevd hvis du ønsker å bruke den. For å konfigurere :app integrering, må du først lage en innkommende webhook på din :app konto. Klikk på knappen Test :app Integrasjon for å bekrefte at innstillingene er korrekte før du lagrer. ', 'webhook_integration_help_button' => 'Du vil se en testknapp etter at du har lagret din :app informasjon.', 'webhook_test_help' => 'Test om din :app integrasjon er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE :app INNSTILLINGER FØRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT-versjon', 'support_footer' => 'Støtte Footer Lenker ', 'support_footer_help' => 'Angi hvem som kan se lenker til Snipe-IT supportinformasjon og brukermanual', diff --git a/resources/lang/nn-NO/admin/settings/message.php b/resources/lang/nn-NO/admin/settings/message.php index 42d29371f..04ab7973b 100644 --- a/resources/lang/nn-NO/admin/settings/message.php +++ b/resources/lang/nn-NO/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, kjør gjenoppretting. Jeg forstår at dette vil overskive alle eksisterende data som er i databasen. Dette vil også logge ut alle eksisterende brukere (inkludert meg selv).', 'restore_confirm' => 'Er du sikker på at du vil gjenopprette databasen fra :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Det oppstod en feil under fjerning. ', 'validation_failed' => 'Din fjerningsbekreftelse er feil. Vennligst skriv inn ordet "DELETE" i bekreftelsesboksen.', diff --git a/resources/lang/nn-NO/button.php b/resources/lang/nn-NO/button.php index d68f89a77..6a9e0b866 100644 --- a/resources/lang/nn-NO/button.php +++ b/resources/lang/nn-NO/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/nn-NO/general.php b/resources/lang/nn-NO/general.php index 9c70d97a1..69cfbec23 100644 --- a/resources/lang/nn-NO/general.php +++ b/resources/lang/nn-NO/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Forbruksvarer', 'country' => 'Land', 'could_not_restore' => 'Feil ved gjenoppretting av :item_type: :error', - 'not_deleted' => ':item_type er ikke slettet og kan ikke gjenopprettes', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Opprett ny', 'created' => 'Enhet opprettet', 'created_asset' => 'eiendel opprettet', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Dette programmet kjører i produksjonsmodus med feilsøking aktiverert. Dette kan utsette følsomme data hvis programmet er tilgjengelig for omverdenen. Deaktiver debug modus ved å sette APP_DEBUG-verdien i filen .env til false.', 'delete' => 'Slett', 'delete_confirm' => 'Er du sikker på at du vil slette :item?', - 'delete_confirm_no_undo' => 'Er du sikker på at du vil slette :item? Dette kan ikke angres.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Slettet', 'delete_seats' => 'Slettede setelisenser', 'deletion_failed' => 'Sletting mislyktes', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Etternavn Fornavn Initialer (smith_j@example.com)', 'firstinitial.lastname' => 'Fornavn Initialer Etternavn (j.smith@example.com)', 'firstnamelastinitial' => 'Fornavn Etternavn Initialer (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Fornavn', 'first_name_format' => 'Fornavn (oladunk@example.com)', 'files' => 'Filer', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Slett bilde', 'include_deleted' => 'Inkluder slettede ressurser', 'image_upload' => 'Last opp bilde', - 'filetypes_accepted_help' => 'Godkjent filtype er :types. Maks opplastingsstørrelse er :size.|Aksepterte filtyper er :types. Maks opplastingsstørrelse er :size.', - 'filetypes_size_help' => 'Maks opplastingsstørrelse er :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Denne bildefilen var ikke lesbar. Aksepterte filtyper er jpg, webp, png, gif og svg. Mime-typen til denne filen er :mimetype.', 'import' => 'Importer', 'import_this_file' => 'Kartfelter og behandle denne filen', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Tilgjengelige lisenser', 'licenses' => 'Lisenser', 'list_all' => 'List alle', - 'loading' => 'Laster... vennligst vent....', + 'loading' => 'Laster... vennligst vent...', 'lock_passwords' => 'Denne feltverdien vil ikke bli lagret i en demo-installasjon.', 'feature_disabled' => 'Denne funksjonen er deaktivert i demo-installasjonen.', 'location' => 'Lokasjon', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logg ut', 'lookup_by_tag' => 'Søk på ID-merke', 'maintenances' => 'Vedlikehold', - 'manage_api_keys' => 'Administrer API-nøkler', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Produsent', 'manufacturers' => 'Produsenter', 'markdown' => 'Dette feltet tillater Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Velg alle', 'search' => 'Søk', 'select_category' => 'Velg en kategori', - 'select_datasource' => 'Velg en datakilde', + 'select_datasource' => 'Select a data source', 'select_department' => 'Velg en avdeling', 'select_depreciation' => 'Velg en avskrivningstype', 'select_location' => 'Velg en lokasjon', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Godkjent av', 'skin' => 'Tema', 'webhook_msg_note' => 'En varsling vil bli sendt via webhook', - 'webhook_test_msg' => 'Hei-hå! Ser som din Slack-integrasjon med Snipe-IT fungerer!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODUS: Noe funksjonalitet er skrudd av i denne installasjonen.', 'site_name' => 'Nettstedsnavn', 'state' => 'Stat', 'status_labels' => 'Statusmerker', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Akseptavtale', 'supplier' => 'Leverandør', @@ -339,16 +340,16 @@ return [ 'view_all' => 'se alle', 'hide_deleted' => 'Skjul slettede', 'email' => 'E-post', - 'do_not_change' => 'Ikke endre', - 'bug_report' => 'Rapporter feil', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Brukerhåndbok', 'setup_step_1' => 'Trinn 1', 'setup_step_2' => 'Trinn 2', 'setup_step_3' => 'Trinn 3', 'setup_step_4' => 'Trinn 4', 'setup_config_check' => 'Sjekk konfigurasjon', - 'setup_create_database' => 'Opprett databasetabeller', - 'setup_create_admin' => 'Opprett adminbruker', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Ferdig!', 'bulk_edit_about_to' => 'Du er i ferd med å redigere følgende: ', 'checked_out' => 'Sjekket ut', diff --git a/resources/lang/nn-NO/localizations.php b/resources/lang/nn-NO/localizations.php index ec2ee04a8..c2a39e938 100644 --- a/resources/lang/nn-NO/localizations.php +++ b/resources/lang/nn-NO/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayisk', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolsk', - 'no-NO'=> 'Norsk', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persisk', 'pl-PL'=> 'Polsk', 'pt-PT'=> 'Portugisisk', diff --git a/resources/lang/nn-NO/validation.php b/resources/lang/nn-NO/validation.php index 6f0c98576..ef4034d0b 100644 --- a/resources/lang/nn-NO/validation.php +++ b/resources/lang/nn-NO/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Atributtfeltet :attribute må ha en verdi.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Gjeldende passord er feil', 'dumbpwd' => 'Passordet er for vanlig.', 'statuslabel_type' => 'Du må velge en gyldig statusetikett-type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/no-NO/account/general.php b/resources/lang/no-NO/account/general.php index 9a4242971..99da024c8 100644 --- a/resources/lang/no-NO/account/general.php +++ b/resources/lang/no-NO/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/no-NO/admin/locations/message.php b/resources/lang/no-NO/admin/locations/message.php index 1f5840ba4..cd124690a 100644 --- a/resources/lang/no-NO/admin/locations/message.php +++ b/resources/lang/no-NO/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokasjon eksisterer ikke.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Lokasjonen er tilknyttet minst en eiendel og kan ikke slettes. Oppdater dine eiendeler slik at de ikke refererer til denne lokasjonen, og prøv igjen. ', 'assoc_child_loc' => 'Lokasjonen er overordnet til minst en underlokasjon og kan ikke slettes. Oppdater din lokasjoner til å ikke referere til denne lokasjonen, og prøv igjen. ', 'assigned_assets' => 'Tildelte ressurser', diff --git a/resources/lang/no-NO/admin/settings/general.php b/resources/lang/no-NO/admin/settings/general.php index d635f260f..36604fa93 100644 --- a/resources/lang/no-NO/admin/settings/general.php +++ b/resources/lang/no-NO/admin/settings/general.php @@ -219,6 +219,8 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'webhook_integration_help' => ':app-integrasjon er valgfritt, men endepunktet og kanalen er påkrevd hvis du ønsker å bruke den. For å konfigurere :app integrering, må du først lage en innkommende webhook på din :app konto. Klikk på knappen Test :app Integrasjon for å bekrefte at innstillingene er korrekte før du lagrer. ', 'webhook_integration_help_button' => 'Du vil se en testknapp etter at du har lagret din :app informasjon.', 'webhook_test_help' => 'Test om din :app integrasjon er riktig konfigurert. DU MÅ LAGRE DINE OPPDATERTE :app INNSTILLINGER FØRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT-versjon', 'support_footer' => 'Støtte Footer Lenker ', 'support_footer_help' => 'Angi hvem som kan se lenker til Snipe-IT supportinformasjon og brukermanual', diff --git a/resources/lang/no-NO/admin/settings/message.php b/resources/lang/no-NO/admin/settings/message.php index 42d29371f..04ab7973b 100644 --- a/resources/lang/no-NO/admin/settings/message.php +++ b/resources/lang/no-NO/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, kjør gjenoppretting. Jeg forstår at dette vil overskive alle eksisterende data som er i databasen. Dette vil også logge ut alle eksisterende brukere (inkludert meg selv).', 'restore_confirm' => 'Er du sikker på at du vil gjenopprette databasen fra :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Det oppstod en feil under fjerning. ', 'validation_failed' => 'Din fjerningsbekreftelse er feil. Vennligst skriv inn ordet "DELETE" i bekreftelsesboksen.', diff --git a/resources/lang/no-NO/button.php b/resources/lang/no-NO/button.php index d68f89a77..6a9e0b866 100644 --- a/resources/lang/no-NO/button.php +++ b/resources/lang/no-NO/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/no-NO/general.php b/resources/lang/no-NO/general.php index 9c70d97a1..69cfbec23 100644 --- a/resources/lang/no-NO/general.php +++ b/resources/lang/no-NO/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Forbruksvarer', 'country' => 'Land', 'could_not_restore' => 'Feil ved gjenoppretting av :item_type: :error', - 'not_deleted' => ':item_type er ikke slettet og kan ikke gjenopprettes', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Opprett ny', 'created' => 'Enhet opprettet', 'created_asset' => 'eiendel opprettet', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Dette programmet kjører i produksjonsmodus med feilsøking aktiverert. Dette kan utsette følsomme data hvis programmet er tilgjengelig for omverdenen. Deaktiver debug modus ved å sette APP_DEBUG-verdien i filen .env til false.', 'delete' => 'Slett', 'delete_confirm' => 'Er du sikker på at du vil slette :item?', - 'delete_confirm_no_undo' => 'Er du sikker på at du vil slette :item? Dette kan ikke angres.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Slettet', 'delete_seats' => 'Slettede setelisenser', 'deletion_failed' => 'Sletting mislyktes', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Etternavn Fornavn Initialer (smith_j@example.com)', 'firstinitial.lastname' => 'Fornavn Initialer Etternavn (j.smith@example.com)', 'firstnamelastinitial' => 'Fornavn Etternavn Initialer (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Fornavn', 'first_name_format' => 'Fornavn (oladunk@example.com)', 'files' => 'Filer', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Slett bilde', 'include_deleted' => 'Inkluder slettede ressurser', 'image_upload' => 'Last opp bilde', - 'filetypes_accepted_help' => 'Godkjent filtype er :types. Maks opplastingsstørrelse er :size.|Aksepterte filtyper er :types. Maks opplastingsstørrelse er :size.', - 'filetypes_size_help' => 'Maks opplastingsstørrelse er :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Denne bildefilen var ikke lesbar. Aksepterte filtyper er jpg, webp, png, gif og svg. Mime-typen til denne filen er :mimetype.', 'import' => 'Importer', 'import_this_file' => 'Kartfelter og behandle denne filen', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Tilgjengelige lisenser', 'licenses' => 'Lisenser', 'list_all' => 'List alle', - 'loading' => 'Laster... vennligst vent....', + 'loading' => 'Laster... vennligst vent...', 'lock_passwords' => 'Denne feltverdien vil ikke bli lagret i en demo-installasjon.', 'feature_disabled' => 'Denne funksjonen er deaktivert i demo-installasjonen.', 'location' => 'Lokasjon', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logg ut', 'lookup_by_tag' => 'Søk på ID-merke', 'maintenances' => 'Vedlikehold', - 'manage_api_keys' => 'Administrer API-nøkler', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Produsent', 'manufacturers' => 'Produsenter', 'markdown' => 'Dette feltet tillater Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Velg alle', 'search' => 'Søk', 'select_category' => 'Velg en kategori', - 'select_datasource' => 'Velg en datakilde', + 'select_datasource' => 'Select a data source', 'select_department' => 'Velg en avdeling', 'select_depreciation' => 'Velg en avskrivningstype', 'select_location' => 'Velg en lokasjon', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Godkjent av', 'skin' => 'Tema', 'webhook_msg_note' => 'En varsling vil bli sendt via webhook', - 'webhook_test_msg' => 'Hei-hå! Ser som din Slack-integrasjon med Snipe-IT fungerer!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODUS: Noe funksjonalitet er skrudd av i denne installasjonen.', 'site_name' => 'Nettstedsnavn', 'state' => 'Stat', 'status_labels' => 'Statusmerker', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Akseptavtale', 'supplier' => 'Leverandør', @@ -339,16 +340,16 @@ return [ 'view_all' => 'se alle', 'hide_deleted' => 'Skjul slettede', 'email' => 'E-post', - 'do_not_change' => 'Ikke endre', - 'bug_report' => 'Rapporter feil', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Brukerhåndbok', 'setup_step_1' => 'Trinn 1', 'setup_step_2' => 'Trinn 2', 'setup_step_3' => 'Trinn 3', 'setup_step_4' => 'Trinn 4', 'setup_config_check' => 'Sjekk konfigurasjon', - 'setup_create_database' => 'Opprett databasetabeller', - 'setup_create_admin' => 'Opprett adminbruker', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Ferdig!', 'bulk_edit_about_to' => 'Du er i ferd med å redigere følgende: ', 'checked_out' => 'Sjekket ut', diff --git a/resources/lang/no-NO/localizations.php b/resources/lang/no-NO/localizations.php index ec2ee04a8..c2a39e938 100644 --- a/resources/lang/no-NO/localizations.php +++ b/resources/lang/no-NO/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayisk', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolsk', - 'no-NO'=> 'Norsk', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persisk', 'pl-PL'=> 'Polsk', 'pt-PT'=> 'Portugisisk', diff --git a/resources/lang/no-NO/validation.php b/resources/lang/no-NO/validation.php index 6f0c98576..ef4034d0b 100644 --- a/resources/lang/no-NO/validation.php +++ b/resources/lang/no-NO/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Atributtfeltet :attribute må ha en verdi.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Gjeldende passord er feil', 'dumbpwd' => 'Passordet er for vanlig.', 'statuslabel_type' => 'Du må velge en gyldig statusetikett-type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/pl-PL/account/general.php b/resources/lang/pl-PL/account/general.php index b021d129b..5c6fd0946 100644 --- a/resources/lang/pl-PL/account/general.php +++ b/resources/lang/pl-PL/account/general.php @@ -3,13 +3,15 @@ return array( 'personal_api_keys' => 'Osobiste klucze API', 'personal_access_token' => 'Personal Access Token', - 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', + 'personal_api_keys_success' => 'Pomyślnie utworzono klucz dostępu API :key', 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', 'api_base_url' => 'Twój bazowy adres URL API znajduje się w:', 'api_base_url_endpoint' => '/<endpoint>', 'api_token_expiration_time' => 'Tokeny API tracą ważność za:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', - 'profile_updated' => 'Account successfully updated', - 'no_tokens' => 'You have not created any personal access tokens.', + 'profile_updated' => 'Aktualizacja konta powiodła się', + 'no_tokens' => 'Nie utworzyłeś żadnych osobistych tokenów.', + 'enable_sounds' => 'Włącz efekty dźwiękowe', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/pl-PL/admin/hardware/message.php b/resources/lang/pl-PL/admin/hardware/message.php index dee8d56da..2b3499e3b 100644 --- a/resources/lang/pl-PL/admin/hardware/message.php +++ b/resources/lang/pl-PL/admin/hardware/message.php @@ -5,10 +5,10 @@ return [ 'undeployable' => 'Uwaga: Ten nabytek został oznaczony jako obecnie nie przypisany. Jeśli jego status uległ zmianie proszę zaktualizować status nabytku.', 'does_not_exist' => 'Nabytek/zasób nie istnieje.', 'does_not_exist_var'=> 'Nie znaleziono zasobu o tagu :asset_tag.', - 'no_tag' => 'No asset tag provided.', + 'no_tag' => 'Nie podano tagu zasobu.', 'does_not_exist_or_not_requestable' => 'Aktywo nie istnieje albo nie można go zażądać.', 'assoc_users' => 'Ten nabytek/zasób jest przypisany do użytkownika i nie może być usunięty. Proszę sprawdzić przypisanie nabytków/zasobów a następnie spróbować ponownie.', - 'warning_audit_date_mismatch' => 'This asset\'s next audit date (:next_audit_date) is before the last audit date (:last_audit_date). Please update the next audit date.', + 'warning_audit_date_mismatch' => 'Data następnego audytu (:next_audit_date) jest przed datą poprzedniego audytu (:last_audit_date). Zaktualizuj datę następnego audytu.', 'create' => [ 'error' => 'Nabytek nie został utworzony, proszę spróbować ponownie. :(', @@ -33,7 +33,7 @@ return [ ], 'audit' => [ - 'error' => 'Asset audit unsuccessful: :error ', + 'error' => 'Audyt zasobu zakończony niepowodzeniem :error ', 'success' => 'Audyt aktywów pomyślnie zarejestrowany.', ], @@ -51,7 +51,7 @@ return [ ], 'import' => [ - 'import_button' => 'Process Import', + 'import_button' => 'Przetwórz import', 'error' => 'Niektóre elementy nie zostały poprawnie zaimportowane.', 'errorDetail' => 'Następujące elementy nie zostały zaimportowane z powodu błędów.', 'success' => 'Twój plik został zaimportowany', diff --git a/resources/lang/pl-PL/admin/locations/message.php b/resources/lang/pl-PL/admin/locations/message.php index 148b5a807..22da94ef6 100644 --- a/resources/lang/pl-PL/admin/locations/message.php +++ b/resources/lang/pl-PL/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokalizacja nie istnieje.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Lokalizacja obecnie jest skojarzona z minimum jednym aktywem i nie może zostać usunięta. Uaktualnij właściwości aktywów tak aby nie było relacji z tą lokalizacją i spróbuj ponownie. ', 'assoc_child_loc' => 'Lokalizacja obecnie jest rodzicem minimum jeden innej lokalizacji i nie może zostać usunięta. Uaktualnij właściwości lokalizacji tak aby nie było relacji z tą lokalizacją i spróbuj ponownie. ', 'assigned_assets' => 'Przypisane aktywa', diff --git a/resources/lang/pl-PL/admin/models/message.php b/resources/lang/pl-PL/admin/models/message.php index 3fcea3552..4eff4d1f8 100644 --- a/resources/lang/pl-PL/admin/models/message.php +++ b/resources/lang/pl-PL/admin/models/message.php @@ -7,7 +7,7 @@ return array( 'no_association' => 'OSTRZEŻENIE! Model aktywów dla tego przedmiotu jest nieprawidłowy lub brakuje!', 'no_association_fix' => 'To zepsuje rzeczy w dziwny i straszny sposób. Edytuj teraz ten zasób, aby przypisać mu model.', 'assoc_users' => 'Ten model jest przypisany do minim jednego aktywa i nie może być usunięty. Proszę usunąć aktywa, a następnie spróbować ponownie. ', - 'invalid_category_type' => 'The category must be an asset category.', + 'invalid_category_type' => 'Kategoria musi być kategorią zasobu.', 'create' => array( 'error' => 'Model nie został stworzony. Spróbuj ponownie.', diff --git a/resources/lang/pl-PL/admin/settings/general.php b/resources/lang/pl-PL/admin/settings/general.php index b2a41a898..758fc3b2d 100644 --- a/resources/lang/pl-PL/admin/settings/general.php +++ b/resources/lang/pl-PL/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'Integracja z :app jest opcjonalna, jednak endpoint i kanał są wymagane, jeśli chcesz z niej korzystać. Aby skonfigurować integrację z aplikacją, musisz najpierw utworzyć przychodzący webhook na swoim koncie :App. Kliknij przycisk Test :app Integration , aby potwierdzić poprawność ustawień przed zapisaniem. ', 'webhook_integration_help_button' => 'Po zapisaniu informacji o :app pojawi się przycisk testowy.', 'webhook_test_help' => 'Sprawdź, czy integracja aplikacji jest poprawnie skonfigurowana. ZAPISZ SWOJE AKTUALIZOWANE :app USTAWIENIA.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Wersja Snipe-IT', 'support_footer' => 'Obsługa linków stopki ', 'support_footer_help' => 'Określ kto widzi linki do Snipe-IT Instrukcji Obsługi oraz Wsparcia', diff --git a/resources/lang/pl-PL/admin/settings/message.php b/resources/lang/pl-PL/admin/settings/message.php index 7aa9389e3..bea3ee8dd 100644 --- a/resources/lang/pl-PL/admin/settings/message.php +++ b/resources/lang/pl-PL/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Tak, przywróć. Mam świadomość, że spowoduje to nadpisanie istniejących danych w bazie danych. Spowoduje to również wylogowanie wszystkich istniejących użytkowników (w tym Ciebie).', 'restore_confirm' => 'Czy na pewno chcesz przywrócić bazę danych z :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Wystąpił błąd podczas czyszczenia. ', 'validation_failed' => 'Potwierdzenie czyszczenia jest niepoprawne. Wpisz słowo "DELETE" w polu potwierdzenia.', diff --git a/resources/lang/pl-PL/button.php b/resources/lang/pl-PL/button.php index b8ed961bc..4e56cdba8 100644 --- a/resources/lang/pl-PL/button.php +++ b/resources/lang/pl-PL/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/pl-PL/general.php b/resources/lang/pl-PL/general.php index 354db6c23..f180daf6b 100644 --- a/resources/lang/pl-PL/general.php +++ b/resources/lang/pl-PL/general.php @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ta aplikacja jest uruchomiona w trybie produkcyjnym z włączonym debugowaniem. Jeśli aplikacja jest dostępna na zewnątrz, może to zagrażać ujawnieniem wrażliwych danych. Wyłącz tryb debugowania przez ustawienie wartości APP_DEBUG w pliku .env na false.', 'delete' => 'Kasuj', 'delete_confirm' => 'Czy na pewno chcesz usunąć :przedmiot?', - 'delete_confirm_no_undo' => 'Czy na pewno chcesz usunąć :item? Nie można tego cofnąć.', + 'delete_confirm_no_undo' => 'Czy na pewno chcesz usunąć :item? Tej operacji nie można cofnąć.', 'deleted' => 'Usunięte', 'delete_seats' => 'Usunięte miejsca', 'deletion_failed' => 'Usunięcie nieudane', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Nazwisko i pierwsza litera imienia (smith_j@example.com)', 'firstinitial.lastname' => 'Pierwsza litera imienia i nazwisko (jsmith@example.com)', 'firstnamelastinitial' => 'Nazwisko i pierwsza litera imienia (smithj@example.com)', - 'lastnamefirstname' => 'Nazwisko i imię (smith.jane@example.com)', + 'lastnamefirstname' => 'Nazwisko.Imię (kowal.jan@przyklad.com)', 'first_name' => 'Imię', 'first_name_format' => 'Imię (jane@example.com)', 'files' => 'Pliki', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Usuń zdjęcie', 'include_deleted' => 'Dołącz usunięte zasoby', 'image_upload' => 'Dodaj zdjęcie', - 'filetypes_accepted_help' => 'Akceptowany typ pliku to :types. Maksymalny dozwolony rozmiar pliku to :size.|Akceptowane typy plików to :types. Maksymalny dozwolony rozmiar plików to :size.', - 'filetypes_size_help' => 'Maksymalny dozwolony rozmiar wysyłania to :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Akceptowany typ pliku to :types. Maksymalny dozwolony rozmiar pliku to :size.|Akceptowane typy plików to :types. Maksymalny dozwolony rozmiar pliku to :size.', + 'filetypes_size_help' => 'Maksymalny rozmiar pliku to :size.', + 'image_filetypes_help' => 'Akceptowane typy plików to jpg, webp, png, gif, svg i avif. Maksymalny rozmiar pliku to :size.', 'unaccepted_image_type' => 'Plik z obrazem jest nieczytelny. Akceptowane typy plików to JPG, WebP, PNG, GIF i SVG. Typ MIME przesłanego pliku to :mimetype.', 'import' => 'Zaimportuj', 'import_this_file' => 'Mapuj pola i przetwarzaj ten plik', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Dostępne licencje', 'licenses' => 'Licencje', 'list_all' => 'Pokaż Wszystkie', - 'loading' => 'Ładuję, proszę czekać....', + 'loading' => 'Ładuję, proszę czekać...', 'lock_passwords' => 'Ta wartość pola nie zostanie zapisana w instalacji demonstracyjnej.', 'feature_disabled' => 'Ta funkcja została wyłączona dla instalacji demo.', 'location' => 'Lokalizacja', @@ -206,8 +206,8 @@ return [ 'new_password' => 'Nowe hasło', 'next' => 'Następny', 'next_audit_date' => 'Data następnej inspekcji', - 'next_audit_date_help' => 'If you use auditing in your organization, this is usually automatically calculated based on the asset's last audit date and audit frequency (in Admin Settings > Alerts) and you can leave this blank. You can manually set this date here if you need to, but it must be later than the last audit date. ', - 'audit_images_help' => 'You can find audit images in the asset\'s history tab.', + 'next_audit_date_help' => 'Jeżeli używasz audytu w swojej organizacji, jest on zazwyczaj automatycznie obliczany na podstawie ostatniej daty audytu i częstotliwości audytu ( Ustawienia Administratora > Powiadomienia) i możesz pozostawić to pole puste. Jeśli potrzebujesz to tutaj możesz ręcznie ustawić datę, ale musi być późniejsza niż data ostatniego audytu. ', + 'audit_images_help' => 'Obrazy audytu można znaleźć w zakładce historii zasobów (Zasób > Historia).', 'no_email' => 'Brak adresu e-mail skojarzonego z tym użytkownikiem', 'last_audit' => 'Ostatnia inspekcja', 'new' => 'nowy!', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Podpisano przez', 'skin' => 'Motyw', 'webhook_msg_note' => 'Powiadomienie zostanie wysłane przez webhook', - 'webhook_test_msg' => 'Super! Wygląda na to, że Twoja integracja :app z Snipe-IT działa!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'Wersja demonstracyjna: Pewne funkcje zostały wyłączone w tej instalacji.', 'site_name' => 'Nazwa Witryny', 'state' => 'Województwo', 'status_labels' => 'Etykiety Statusu', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Umowa akceptacyjna', 'supplier' => 'Dostawca', @@ -339,16 +340,16 @@ return [ 'view_all' => 'pokaż wszystko', 'hide_deleted' => 'Ukryj usunięte', 'email' => 'Adres e-mail', - 'do_not_change' => 'Nie zmieniaj', - 'bug_report' => 'Zgłoś błąd', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Podręcznik użytkownika', 'setup_step_1' => 'Krok 1', 'setup_step_2' => 'Krok 2', 'setup_step_3' => 'Krok 3', 'setup_step_4' => 'Krok 4', 'setup_config_check' => 'Sprawdzanie konfiguracji', - 'setup_create_database' => 'Utwórz tabelę w bazie danych', - 'setup_create_admin' => 'Utwórz konto administratora', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Zakończono!', 'bulk_edit_about_to' => 'Zamierzasz edytować: ', 'checked_out' => 'Wydane', diff --git a/resources/lang/pl-PL/localizations.php b/resources/lang/pl-PL/localizations.php index 148b0dab5..b547f62e8 100644 --- a/resources/lang/pl-PL/localizations.php +++ b/resources/lang/pl-PL/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'malajski', 'mi-NZ'=> 'maoryski', 'mn-MN'=> 'mongolski', - 'no-NO'=> 'norweski', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'perski', 'pl-PL'=> 'polski', 'pt-PT'=> 'portugalski', diff --git a/resources/lang/pl-PL/validation.php b/resources/lang/pl-PL/validation.php index c9fcf0e81..ff42c0623 100644 --- a/resources/lang/pl-PL/validation.php +++ b/resources/lang/pl-PL/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':attribute nie może być puste.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Twoje bieżące hasło jest niepoprawne', 'dumbpwd' => 'To hasło jest zbyt powszechne.', 'statuslabel_type' => 'Musisz wybrać odpowiedni typ etykiety statusu', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/pt-BR/account/general.php b/resources/lang/pt-BR/account/general.php index 8ec44d0af..7c32f21eb 100644 --- a/resources/lang/pt-BR/account/general.php +++ b/resources/lang/pt-BR/account/general.php @@ -13,4 +13,6 @@ return array( 'api_reference' => 'Por favor, verifique as referências da API para encontrar endpoints específicos da API e documentação adicional da API.', 'profile_updated' => 'Conta atualizada com sucesso', 'no_tokens' => 'Você não criou nenhum token de acesso pessoal.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/pt-BR/admin/locations/message.php b/resources/lang/pt-BR/admin/locations/message.php index abd89d997..48ac1d972 100644 --- a/resources/lang/pt-BR/admin/locations/message.php +++ b/resources/lang/pt-BR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'O local não existe.', - 'assoc_users' => 'Este local não é deletado atualmente, porque é a localização do registro para pelo menos um ativo ou usuário, tem ativos atribuídos a ele, ou é a localização principal de outro local. Por favor, atualize os modelos para não referenciarem mais esta empresa e tente novamente. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Este local esta atualmente associado a pelo menos um ativo e não pode ser deletado. Por favor atualize seu ativo para não fazer mais referência a este local e tente novamente. ', 'assoc_child_loc' => 'Este local é atualmente o principal de pelo menos local secundário e não pode ser deletado. Por favor atualize seus locais para não fazer mais referência a este local e tente novamente. ', 'assigned_assets' => 'Ativos atribuídos', diff --git a/resources/lang/pt-BR/admin/settings/general.php b/resources/lang/pt-BR/admin/settings/general.php index 741be2ef1..8b042e6cc 100644 --- a/resources/lang/pt-BR/admin/settings/general.php +++ b/resources/lang/pt-BR/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'integração :app é opcional, porém o endpoint e o canal são necessários se você deseja usá-lo. Para configurar a integração :app, primeiro você deve criar um webhook entrante na sua conta :app. Clique no botão Teste a integração do :app para confirmar se suas configurações estão corretas antes de salvar. ', 'webhook_integration_help_button' => 'Depois de salvar suas informações do :app, será exibido um botão de teste.', 'webhook_test_help' => 'Teste se sua integração :app está configurada corretamente. VOCÊ DEVE SALVAR SUAS CONFIGURAÇÃO :app PRIMEIRO.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Versão do Snipe-IT', 'support_footer' => 'Links de rodapé de suporte ', 'support_footer_help' => 'Especifique quem vê os links para as informações de Suporte Snipe-IT e o Manual do Usuário', diff --git a/resources/lang/pt-BR/admin/settings/message.php b/resources/lang/pt-BR/admin/settings/message.php index ee47849e9..e84adf51a 100644 --- a/resources/lang/pt-BR/admin/settings/message.php +++ b/resources/lang/pt-BR/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Sim, restaurar. Eu reconheço que isso irá sobrescrever quaisquer dados existentes atualmente no banco de dados. Isto também desconectará todos os usuários existentes (incluindo você).', 'restore_confirm' => 'Tem certeza que deseja restaurar seu banco de dados a partir de :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Ocorreu um erro ao excluir os registros. ', 'validation_failed' => 'Sua confirmação de exclusão está incorreta. Por favor, digite a palavra "DELETE" na caixa de confirmação.', diff --git a/resources/lang/pt-BR/button.php b/resources/lang/pt-BR/button.php index 053b40ec5..48014e8dc 100644 --- a/resources/lang/pt-BR/button.php +++ b/resources/lang/pt-BR/button.php @@ -7,7 +7,7 @@ return [ 'checkin_and_delete' => 'Fazer check-in de todos / Excluir usuário', 'delete' => 'Excluir', 'edit' => 'Editar', - 'clone' => 'Clone', + 'clone' => 'Clonar', 'restore' => 'Restaurar', 'remove' => 'Remover', 'request' => 'Solicitação', @@ -23,11 +23,11 @@ return [ 'append' => 'Acrescentar', 'new' => 'Novo', 'var' => [ - 'clone' => 'Clone :item_type', + 'clone' => 'Clonar :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', - 'create' => 'Create New :item_type', + 'restore' => 'Restore :item_type', + 'create' => 'Criar novo :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', ] diff --git a/resources/lang/pt-BR/general.php b/resources/lang/pt-BR/general.php index 1caee13cf..b00d2a623 100644 --- a/resources/lang/pt-BR/general.php +++ b/resources/lang/pt-BR/general.php @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Esta aplicação está em execução no modo de produção com a depuração ativada. Isso pode expor dados sensíveis se seu aplicativo é acessível para o mundo exterior. Desative o modo de depuração mudando o valor de APP_DEBUG no seu arquivo.env para false.', 'delete' => 'Excluir', 'delete_confirm' => 'Você tem certeza que deseja excluir :item?', - 'delete_confirm_no_undo' => 'Tem certeza que deseja excluir :item? Isto não pode ser desfeito.', + 'delete_confirm_no_undo' => 'Tem certeza de que deseja excluir :item? Isto não pode ser desfeito.', 'deleted' => 'Excluído', 'delete_seats' => 'Assentos Excluídos', 'deletion_failed' => 'Falha ao excluir', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Sobrenome Primeira Inicial (silva_j@exemplo.com.br)', 'firstinitial.lastname' => 'Inicial do Nome sobrenome (j.silva@exemplo.com.br)', 'firstnamelastinitial' => 'Primeiro Nome com Inicial do Sobrenome (joses@exemplo.com.br)', - 'lastnamefirstname' => 'Sobrenome Primeiro Nome (silva_j@exemplo.com.br)', + 'lastnamefirstname' => 'Último Nome.Primeiro nome (smith.jane@exemplo.com)', 'first_name' => 'Primeiro Nome', 'first_name_format' => 'Primeiro Nome (jose@exemplo.com.br)', 'files' => 'Arquivos', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Excluir Imagem', 'include_deleted' => 'Incluir Ativos Removidos', 'image_upload' => 'Carregar Imagem', - 'filetypes_accepted_help' => 'Os tipos de arquivos aceito são :types. O tamanho máximo de carregamento permitido é de :size.|Os tipos de arquivos aceitos são :types. O tamanho máximo de carregamentos permitido é de :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', 'filetypes_size_help' => 'O tamanho máximo de carregamento permitido é de :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'image_filetypes_help' => 'Tipos de arquivos aceitos são jpg, webp, png, gif, svg e avif. O tamanho máximo de upload permitido é :size.', 'unaccepted_image_type' => 'Este arquivo de imagem não é legível. Tipos de arquivos aceitos são jpg, webp, png, gif e svg. O mimetype deste arquivo é: :mimetype.', 'import' => 'Importar', 'import_this_file' => 'Mapear os campos e processar este arquivo', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenças disponíveis', 'licenses' => 'Licenças', 'list_all' => 'Listar Todos', - 'loading' => 'Carregando, por favor aguarde...', + 'loading' => 'Carregando... Por favor, aguarde...', 'lock_passwords' => 'Este valor de campo não será salvo em uma instalação de demonstração.', 'feature_disabled' => 'Esta funcionalidade foi desativada na versão de demonstração.', 'location' => 'Local', @@ -193,7 +193,7 @@ return [ 'logout' => 'Sair', 'lookup_by_tag' => 'Pesquisar por Etiqueta do Ativo', 'maintenances' => 'Manutenções', - 'manage_api_keys' => 'Gerenciar Chaves da API', + 'manage_api_keys' => 'Gerenciar chaves de API', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite marcação com sintaxe do Github.', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Assinado por', 'skin' => 'Temas', 'webhook_msg_note' => 'Uma notificação será enviada via webhook', - 'webhook_test_msg' => 'Parabéns! Parece que sua integração :app com o sistema está funcionando!', + 'webhook_test_msg' => 'Parabéns! Parece que sua integração de :app com o sistema está funcionando!', 'some_features_disabled' => 'MODO DE DEMONSTRAÇÃO: Algumas funcionalidades estão desativadas nesta instalação.', 'site_name' => 'Nome do Site', 'state' => 'Estado', 'status_labels' => 'Rótulos de Situação', + 'status_label' => 'Status Label', 'status' => 'SItuação', 'accept_eula' => 'Acordo de Aceitação', 'supplier' => 'Fornecedor', @@ -339,16 +340,16 @@ return [ 'view_all' => 'ver todos', 'hide_deleted' => 'Ocultar excluídos', 'email' => 'E-mail', - 'do_not_change' => 'Não alterar', - 'bug_report' => 'Relatar um Erro/Problema', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Manual do Usuário', 'setup_step_1' => 'Passo 1', 'setup_step_2' => 'Passo 2', 'setup_step_3' => 'Passo 3', 'setup_step_4' => 'Passo 4', 'setup_config_check' => 'Verificar Configuração', - 'setup_create_database' => 'Criar tabelas no banco de dados', - 'setup_create_admin' => 'Criar usuário administrativo', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Concluído!', 'bulk_edit_about_to' => 'Você está prestes a editar o seguinte: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/pt-BR/localizations.php b/resources/lang/pt-BR/localizations.php index af8493c86..e06df6fa0 100644 --- a/resources/lang/pt-BR/localizations.php +++ b/resources/lang/pt-BR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaio', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Norueguês', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persa', 'pl-PL'=> 'Polonês', 'pt-PT'=> 'Português', diff --git a/resources/lang/pt-BR/validation.php b/resources/lang/pt-BR/validation.php index f07c920d6..c39968a34 100644 --- a/resources/lang/pt-BR/validation.php +++ b/resources/lang/pt-BR/validation.php @@ -20,18 +20,18 @@ return [ 'after_or_equal' => 'The :attribute field must be a date after or equal to :date.', 'alpha' => 'The :attribute field must only contain letters.', 'alpha_dash' => 'The :attribute field must only contain letters, numbers, dashes, and underscores.', - 'alpha_num' => 'The :attribute field must only contain letters and numbers.', + 'alpha_num' => 'O campo :attribute deve conter apenas letras e números.', 'array' => 'The :attribute field must be an array.', 'ascii' => 'The :attribute field must only contain single-byte alphanumeric characters and symbols.', - 'before' => 'The :attribute field must be a date before :date.', - 'before_or_equal' => 'The :attribute field must be a date before or equal to :date.', + 'before' => 'O campo :attribute deve ser uma data anterior a :date.', + 'before_or_equal' => 'O campo :attribute deve ser uma data anterior ou igual a :date.', 'between' => [ - 'array' => 'The :attribute field must have between :min and :max items.', - 'file' => 'The :attribute field must be between :min and :max kilobytes.', + 'array' => 'O campo :attribute deve ter entre :min e :max itens.', + 'file' => 'O campo :attribute deve ter entre :min e :max kilobytes.', 'numeric' => 'The :attribute field must be between :min and :max.', 'string' => 'The :attribute field must be between :min and :max characters.', ], - 'boolean' => 'The :attribute field must be true or false.', + 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.', 'can' => 'The :attribute field contains an unauthorized value.', 'confirmed' => 'The :attribute field confirmation does not match.', 'contains' => 'The :attribute field is missing a required value.', @@ -54,7 +54,7 @@ return [ 'enum' => 'O :attribute selecionado é inválido.', 'exists' => 'O :attribute selecionado é inválido.', 'extensions' => 'The :attribute field must have one of the following extensions: :values.', - 'file' => 'The :attribute field must be a file.', + 'file' => 'O campo :attribute deve ser um arquivo.', 'filled' => 'O :attribute deve ter um valor.', 'gt' => [ 'array' => 'The :attribute field must have more than :value items.', @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'O campo:attribute deve estar presente.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Sua senha atual está incorreta', 'dumbpwd' => 'Essa senha é muito comum.', 'statuslabel_type' => 'Você deve selecionar um tipo de etiqueta de status válido', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/pt-PT/account/general.php b/resources/lang/pt-PT/account/general.php index b11650246..76fd62bad 100644 --- a/resources/lang/pt-PT/account/general.php +++ b/resources/lang/pt-PT/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/pt-PT/admin/locations/message.php b/resources/lang/pt-PT/admin/locations/message.php index eb175ed8b..5d8e45c27 100644 --- a/resources/lang/pt-PT/admin/locations/message.php +++ b/resources/lang/pt-PT/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Localização não existe.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Esta localização está atualmente associada com pelo menos um artigo e não pode ser removida. Atualize este artigos de modo a não referenciarem mais este local e tente novamente. ', 'assoc_child_loc' => 'Esta localização contém pelo menos uma sub-localização e não pode ser removida. Por favor, atualize as localizações para não referenciarem mais esta localização e tente novamente. ', 'assigned_assets' => 'Artigos atribuídos', diff --git a/resources/lang/pt-PT/admin/settings/general.php b/resources/lang/pt-PT/admin/settings/general.php index 5cfdac9c6..4294a32ec 100644 --- a/resources/lang/pt-PT/admin/settings/general.php +++ b/resources/lang/pt-PT/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':A integração com Slack é opcional. Contudo, se quiser usá-la, o endpoint e o canal são obrigatórios. Para configurar a integração com Slack, deve previamente criar um webhook de receção na sua conta Slack. Clique no botão Teste :app Integração para confirmar que as suas configurações estão corretas antes de salvar. ', 'webhook_integration_help_button' => 'Após salvar as suas informações do :app, será exibido um botão de teste.', 'webhook_test_help' => 'Teste se a sua integração :app está configurada corretamente. VOCÊ DEVE SALVAR AS CONFIGURAÇÕES DE :app PRIMEIRO.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Versão Snipe-IT', 'support_footer' => 'Links de rodapé de suporte', 'support_footer_help' => 'Especifica quem vê os links de Suporte e Manual de utilizador do Snipe-IT', diff --git a/resources/lang/pt-PT/admin/settings/message.php b/resources/lang/pt-PT/admin/settings/message.php index 6429f0869..ddcc136dd 100644 --- a/resources/lang/pt-PT/admin/settings/message.php +++ b/resources/lang/pt-PT/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Sim, restaurar. Eu reconheço que isso irá substituir quaisquer dados existentes atualmente na base de dados. Isto também irá desligar todos os utilizadores existentes (incluindo você).', 'restore_confirm' => 'Tem a certeza que deseja restaurar a sua base de dados a partir de :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Ocorreu um erro ao eliminar os dados. ', 'validation_failed' => 'A confirmação para limpar os dados correu mal. Digite a palavra "Apagar" na caixa de confirmação.', diff --git a/resources/lang/pt-PT/button.php b/resources/lang/pt-PT/button.php index fd6ea0325..63fd78ece 100644 --- a/resources/lang/pt-PT/button.php +++ b/resources/lang/pt-PT/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/pt-PT/general.php b/resources/lang/pt-PT/general.php index c18d69537..dc112faad 100644 --- a/resources/lang/pt-PT/general.php +++ b/resources/lang/pt-PT/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumíveis', 'country' => 'País', 'could_not_restore' => 'Erro ao restaurar :item_type: :error', - 'not_deleted' => 'O :item_type não foi apagado, então ele não pode ser restaurado', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Criar Novo', 'created' => 'Item criado', 'created_asset' => 'artigo criado', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Esta aplicação está em execução no modo de produção com a depuração activada. Isso pode expor dados sensíveis se seu aplicativo é acessível para o mundo exterior. Desactive o modo de depuração mudando o valor de APP_DEBUG no teu ficheiro .env para false.', 'delete' => 'Remover', 'delete_confirm' => 'Tem a certeza que deseja eliminar :item?', - 'delete_confirm_no_undo' => 'Tem a certeza que deseja excluir :item? Isto não pode ser desfeito.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Removidos', 'delete_seats' => 'Utilizadores apagados', 'deletion_failed' => 'Falha ao Eliminar', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Sobrenome Inicial Nome Próprio (smith_j@example.com)', 'firstinitial.lastname' => 'Inicial Nome Próprio Sobrenome(j.smith@example.com)', 'firstnamelastinitial' => 'Nome próprio Sobrenome (janes@exemple.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Nome', 'first_name_format' => 'Primeiro Nome (jane@example.com)', 'files' => 'Ficheiros', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Apagar imagem', 'include_deleted' => 'Incluir Ativos Excluídos', 'image_upload' => 'Carregar Imagem', - 'filetypes_accepted_help' => 'O tipo de arquivo aceito é :types. O tamanho máximo de upload permitido é :size.abroad. tipos de arquivos aceitos são :types. O tamanho máximo de upload permitido é :size.', - 'filetypes_size_help' => 'O tamanho máximo de upload permitido é :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Este ficheiro de imagem não era legível. Tipos de ficheiros aceites são jpg, webp, png, gif e svg. O mimetype deste ficheiro é: :mimetype.', 'import' => 'Importar', 'import_this_file' => 'Mapear os campos e processar este arquivo', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenças disponíveis', 'licenses' => 'Licenças', 'list_all' => 'Listar todas', - 'loading' => 'A carregar... por favor aguarde....', + 'loading' => 'A carregar... por favor aguarde...', 'lock_passwords' => 'O valor do campo não será guardado numa instalação de demonstração.', 'feature_disabled' => 'Esta funcionalidade foi desativada na versão de demonstração.', 'location' => 'Localização', @@ -193,7 +193,7 @@ return [ 'logout' => 'Sair', 'lookup_by_tag' => 'Procurar por Código', 'maintenances' => 'Manutenções', - 'manage_api_keys' => 'Gerir API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Fabricante', 'manufacturers' => 'Fabricantes', 'markdown' => 'Este campo permite Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Selecionar Tudo', 'search' => 'Pesquisar', 'select_category' => 'Selecionar Categoria', - 'select_datasource' => 'Selecione uma fonte de dados', + 'select_datasource' => 'Select a data source', 'select_department' => 'Selecione um Departamento', 'select_depreciation' => 'Selecione um Tipo de Depreciação', 'select_location' => 'Selecione uma localização', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Assinado por', 'skin' => 'Skin', 'webhook_msg_note' => 'Uma notificação será enviada via webhook', - 'webhook_test_msg' => 'Ah, hai! Parece que a sua integração com o Snipe-IT está a funcionar!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'MODO DE DEMONSTRAÇÃO: Algumas funcionalidades estão desativadas para esta instalação.', 'site_name' => 'Nome do site', 'state' => 'Distrito', 'status_labels' => 'Estados', + 'status_label' => 'Status Label', 'status' => 'Estado', 'accept_eula' => 'Contrato de licença', 'supplier' => 'Fornecedor', @@ -339,16 +340,16 @@ return [ 'view_all' => 'ver todos', 'hide_deleted' => 'Ocultar apagados', 'email' => 'Email', - 'do_not_change' => 'Não alterar', - 'bug_report' => 'Reportar um Erro', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Manual do Utilizador', 'setup_step_1' => 'Passo 1', 'setup_step_2' => 'Passo 2', 'setup_step_3' => 'Passo 3', 'setup_step_4' => 'Passo 4', 'setup_config_check' => 'Verificação da configuração', - 'setup_create_database' => 'Criar Tabelas de Base de Dados', - 'setup_create_admin' => 'Criar Administrador', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Concluído!', 'bulk_edit_about_to' => 'Está prestes a editar o seguinte: ', 'checked_out' => 'Entregue', diff --git a/resources/lang/pt-PT/localizations.php b/resources/lang/pt-PT/localizations.php index d220a024f..0bf88d6fb 100644 --- a/resources/lang/pt-PT/localizations.php +++ b/resources/lang/pt-PT/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaio', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongol', - 'no-NO'=> 'Norueguês', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persa', 'pl-PL'=> 'Polaco', 'pt-PT'=> 'Português', diff --git a/resources/lang/pt-PT/validation.php b/resources/lang/pt-PT/validation.php index 73633f571..34b7f1f90 100644 --- a/resources/lang/pt-PT/validation.php +++ b/resources/lang/pt-PT/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'O campo: atributo deve estar presente.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Sua senha atual está incorreta', 'dumbpwd' => 'Essa senha é muito comum.', 'statuslabel_type' => 'Você deve selecionar um tipo de etiqueta de status válido', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ro-RO/account/general.php b/resources/lang/ro-RO/account/general.php index 2718d43eb..94d1f4e1e 100644 --- a/resources/lang/ro-RO/account/general.php +++ b/resources/lang/ro-RO/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ro-RO/admin/locations/message.php b/resources/lang/ro-RO/admin/locations/message.php index 4b1a136ce..0d196d0e9 100644 --- a/resources/lang/ro-RO/admin/locations/message.php +++ b/resources/lang/ro-RO/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Locatia nu exista.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Această locație este în prezent asociată cu cel puțin un material și nu poate fi ștearsă. Actualizați-vă activele astfel încât acestea să nu mai fie menționate și să încercați din nou.', 'assoc_child_loc' => 'Această locație este în prezent părinte pentru cel puțin o locație copil și nu poate fi ștearsă. Actualizați locațiile dvs. pentru a nu mai referi această locație și încercați din nou.', 'assigned_assets' => 'Atribuire Active', diff --git a/resources/lang/ro-RO/admin/settings/general.php b/resources/lang/ro-RO/admin/settings/general.php index 63a1b3d2c..5ab072299 100644 --- a/resources/lang/ro-RO/admin/settings/general.php +++ b/resources/lang/ro-RO/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'Integrarea :app este opțională, totuși punctul final și canalul sunt necesare dacă doriți să îl folosiți. Pentru a configura integrarea :app, trebuie să creați mai întâi un webhook primit pe contul dvs. :app. Faceți clic pe butonul Test :app Integration pentru a confirma că setările sunt corecte înainte de salvare. ', 'webhook_integration_help_button' => 'Odată ce ați salvat informațiile dvs. de :app, va apărea un buton de testare.', 'webhook_test_help' => 'Testează dacă integrarea ta :app este configurată corect. TREBUIE SĂ VĂ APĂSAȚI ACTUALIZAT :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT versiune', 'support_footer' => 'Legăturile de suport in subsol ', 'support_footer_help' => 'Specificați cine vede legăturile la informațiile despre asistența Snipe-IT și la Manualul utilizatorilor', diff --git a/resources/lang/ro-RO/admin/settings/message.php b/resources/lang/ro-RO/admin/settings/message.php index 31e5990d2..47051e137 100644 --- a/resources/lang/ro-RO/admin/settings/message.php +++ b/resources/lang/ro-RO/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Da, restaurează. Confirm suprascrierea tuturor datelor existente în baza de date. Acest lucru va deconecta și pe toți utilizatorii curenți (inclusiv pe tine).', 'restore_confirm' => 'Sunteți sigur că doriți restaurarea bazei de date din fișierul :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'A apărut o eroare în timpul epurării.', 'validation_failed' => 'Confirmarea dvs. de purjare este incorectă. Introduceți cuvântul "DELETE" în caseta de confirmare.', diff --git a/resources/lang/ro-RO/button.php b/resources/lang/ro-RO/button.php index 169d449a7..e50219a1a 100644 --- a/resources/lang/ro-RO/button.php +++ b/resources/lang/ro-RO/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ro-RO/general.php b/resources/lang/ro-RO/general.php index 573c6d9d8..424d9c692 100644 --- a/resources/lang/ro-RO/general.php +++ b/resources/lang/ro-RO/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumabile', 'country' => 'Tara', 'could_not_restore' => 'Eroare la restabilirea :item_type: :error', - 'not_deleted' => ':item_type nu este șters astfel încât nu poate fi restaurat', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Creeaza', 'created' => 'Articol creat', 'created_asset' => 'Activ creat', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Această aplicație rulează în modul de producție cu debugging activat. Acest lucru poate expune date sensibile dacă aplicația dvs. este accesibilă lumii exterioare. Dezactivați modul de depanare setând valoarea APP_DEBUG din fișierul .env la false.', 'delete' => 'Sterge', 'delete_confirm' => 'Sigur doriți să ștergeți :item?', - 'delete_confirm_no_undo' => 'Sigur doriți să ștergeți :item? Această acțiune nu poate fi anulată.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Sters', 'delete_seats' => 'Locurile șterse', 'deletion_failed' => 'Ștergerea a eșuat', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Prenume Prima Inițială (smith_j@example.com)', 'firstinitial.lastname' => 'Primul nume inițial (j.smith@example.com)', 'firstnamelastinitial' => 'Prenume Nume Ultima Inițială (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Prenume', 'first_name_format' => 'Prenume (jane@example.com)', 'files' => 'Fișiere', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Sterge poza', 'include_deleted' => 'Include active șterse', 'image_upload' => 'Incarca poza', - 'filetypes_accepted_help' => 'Tipul de fișier acceptat este :types. Dimensiunea maximă permisă a încărcării este :size. Tipurile de fișiere acceptate sunt :types. Dimensiunea maximă permisă este de :size.', - 'filetypes_size_help' => 'Dimensiunea maximă permisă pentru încărcare este de :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Acest fișier de imagine nu a putut fi citit. Tipurile de fișiere acceptate sunt jpg, webp, png, gif și svg. Amprenta acestui fișier este: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Harta câmpuri și procesarea acestui fișier', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licențe disponibile', 'licenses' => 'Licente', 'list_all' => 'Arata tot', - 'loading' => 'Încărcare... vă rugăm așteptați....', + 'loading' => 'Încărcare... vă rugăm așteptați...', 'lock_passwords' => 'Această valoare a câmpului nu va fi salvată într-o instalare demonstrativă.', 'feature_disabled' => 'Această funcție a fost dezactivată pentru instalarea demonstrativă.', 'location' => 'Locatie', @@ -193,7 +193,7 @@ return [ 'logout' => 'Log out', 'lookup_by_tag' => 'Căutarea după eticheta de activ', 'maintenances' => 'Mentenanțe', - 'manage_api_keys' => 'Gestionare chei API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Producator', 'manufacturers' => 'Producatori', 'markdown' => 'Acest câmp permite marcarea Github markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Selectează tot', 'search' => 'Căutare', 'select_category' => 'Selectați o categorie', - 'select_datasource' => 'Selectează o bază de date', + 'select_datasource' => 'Select a data source', 'select_department' => 'Selectați un departament', 'select_depreciation' => 'Selectați un tip de amortizare', 'select_location' => 'Selectați o locație', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Semnat dezactivat de', 'skin' => 'Piele', 'webhook_msg_note' => 'O notificare va fi trimisă prin webhook', - 'webhook_test_msg' => 'Oh hai! Se pare că integrarea ta :app cu Snipe-IT funcționează!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'Modul DEMO: Unele caracteristici sunt dezactivate pentru această instalare.', 'site_name' => 'Nume site', 'state' => 'Judet', 'status_labels' => 'Etichete status', + 'status_label' => 'Status Label', 'status' => 'Stare', 'accept_eula' => 'Acceptare acord', 'supplier' => 'Furnizor', @@ -339,16 +340,16 @@ return [ 'view_all' => 'vezi toate', 'hide_deleted' => 'Ascunde șterse', 'email' => 'E-mail', - 'do_not_change' => 'Nu schimba', - 'bug_report' => 'Raportează o eroare', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Manualul utilizatorului', 'setup_step_1' => 'Pasul 1', 'setup_step_2' => 'Pasul 2', 'setup_step_3' => 'Pasul 3', 'setup_step_4' => 'Pasul 4', 'setup_config_check' => 'Verificare configurație', - 'setup_create_database' => 'Creaza tabele baza de date', - 'setup_create_admin' => 'Creare utilizator administrator', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Terminat!', 'bulk_edit_about_to' => 'Urmează să editați următoarele: ', 'checked_out' => 'Predat', diff --git a/resources/lang/ro-RO/localizations.php b/resources/lang/ro-RO/localizations.php index 58600c354..fa8ac10c8 100644 --- a/resources/lang/ro-RO/localizations.php +++ b/resources/lang/ro-RO/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaeză', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolie', - 'no-NO'=> 'Norvegiană', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'persană', 'pl-PL'=> 'Poloneză', 'pt-PT'=> 'Portugheză', diff --git a/resources/lang/ro-RO/validation.php b/resources/lang/ro-RO/validation.php index 34e1ec23e..68e74506f 100644 --- a/resources/lang/ro-RO/validation.php +++ b/resources/lang/ro-RO/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Câmpul atributului trebuie să fie prezent.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Parola curentă este incorectă', 'dumbpwd' => 'Această parolă este prea obișnuită.', 'statuslabel_type' => 'Trebuie să selectați un tip de etichetă de stare validă', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ru-RU/account/general.php b/resources/lang/ru-RU/account/general.php index 6c54d5c6e..de267467b 100644 --- a/resources/lang/ru-RU/account/general.php +++ b/resources/lang/ru-RU/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ru-RU/admin/locations/message.php b/resources/lang/ru-RU/admin/locations/message.php index b76abe49b..f56fbbafd 100644 --- a/resources/lang/ru-RU/admin/locations/message.php +++ b/resources/lang/ru-RU/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Статус актива не существует.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Это месторасположение связано как минимум с одним активом и не может быть удалено. Измените ваши активы так, чтобы они не ссылались на это месторасположение и попробуйте ещё раз. ', 'assoc_child_loc' => 'У этого месторасположения является родительским и у него есть как минимум одно месторасположение уровнем ниже. Поэтому оно не может быть удалено. Обновите ваши месторасположения, так чтобы не ссылаться на него и попробуйте снова. ', 'assigned_assets' => 'Присвоенные активы', diff --git a/resources/lang/ru-RU/admin/settings/general.php b/resources/lang/ru-RU/admin/settings/general.php index e6fd3cdfc..605bd9edb 100644 --- a/resources/lang/ru-RU/admin/settings/general.php +++ b/resources/lang/ru-RU/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'Интеграция с :app необязательна, однако конечная точка и канал - обязательны, если Вы планируете её использовать. Для конфигурации интеграции с :app, Вы должны в первую очередь создать исходящий веб-хук на свою учетную запись в :app. Нажмите на кнопку Протестировать Интеграцию с :app чтобы убедится перед сохранением, что Ваши параметры - верны. ', 'webhook_integration_help_button' => 'Как только вы сохраните :app информацию, появится тестовая кнопка.', 'webhook_test_help' => 'Проверьте, правильно ли настроена интеграция :app. ВЫ ДОЛЖНЫ СОХРАНИТЬ ВАШЕЕ ОБНОВЛЕННЫЕ :app НАСТРОЙКИ ПРИВЛЕЧЕНИЯ.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Версия Snipe-IT', 'support_footer' => 'Ссылки на поддержу в нижнем колонтитуле ', 'support_footer_help' => 'Отображать или не отображать ссылку на руководство пользователя и поддержку Snipe-IT', diff --git a/resources/lang/ru-RU/admin/settings/message.php b/resources/lang/ru-RU/admin/settings/message.php index dc7b02a98..08c0a6f5c 100644 --- a/resources/lang/ru-RU/admin/settings/message.php +++ b/resources/lang/ru-RU/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Да, восстановить. Я осознаю, что это перезапишет все существующие данные в базе данных. Это также выйдет из учетных записей всех ваших существующих пользователей (включая вас).', 'restore_confirm' => 'Вы уверены, что хотите восстановить базу данных из :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Возникла ошибка при попытке очистки. ', 'validation_failed' => 'Ваш текст подтверждения очистки неверен. Пожалуйста, наберите слово "DELETE" в поле подтверждения.', diff --git a/resources/lang/ru-RU/button.php b/resources/lang/ru-RU/button.php index c580d84e8..299685d73 100644 --- a/resources/lang/ru-RU/button.php +++ b/resources/lang/ru-RU/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ru-RU/general.php b/resources/lang/ru-RU/general.php index 73cf16ff6..8f90d7840 100644 --- a/resources/lang/ru-RU/general.php +++ b/resources/lang/ru-RU/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Расходные материалы', 'country' => 'Страна', 'could_not_restore' => 'Ошибка восстановления :item_type: :error', - 'not_deleted' => ':item_type не удален, поэтому его нельзя восстановить', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Создать нового', 'created' => 'Элемент создан', 'created_asset' => 'Создать актив', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Это приложение выполняется в режиме с включенной отладкой. Это может нарушить конфиденциальность данных, если приложение доступно для внешнего мира. Отключите режим отладки, поменяв значение APP_DEBUG в файле .env на false.', 'delete' => 'Удалить', 'delete_confirm' => 'Вы действительно хотите удалить?', - 'delete_confirm_no_undo' => 'Вы уверенны, что хотите удалить :item? Это действие нельзя будет отменить.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Удалено', 'delete_seats' => 'Удаленные лицензии', 'deletion_failed' => 'Не удалось удалить', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Фамилия Первая буква имени (ivanov_i@example.com)', 'firstinitial.lastname' => 'Первая буква имени и фамилия (i.ivanov@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Имя', 'first_name_format' => 'Имя (jane@example.com)', 'files' => 'Файлы', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Удалить изображение', 'include_deleted' => 'Включать удаленные активы', 'image_upload' => 'Загрузить изображение', - 'filetypes_accepted_help' => 'Разрешенный тип файлов :types. Максимальный допустимый размер загружаемых файлов :size.|Разрешенные типы файлов :types. Максимальный допустимый размер загружаемых файлов :size.', - 'filetypes_size_help' => 'Максимальный размер файла - :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Нечитаемый файл изображения. Допустимые типы файлов: jpg, webp, png, gif и svg. Медиа тип этого файла: :mimetype.', 'import' => 'Импорт', 'import_this_file' => 'Сопоставить поля и обработать этот файл', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Доступные лицензии', 'licenses' => 'Лицензии', 'list_all' => 'Весь список', - 'loading' => 'Загрузка, пожалуйста подождите...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Это значение не будет сохранено в демо-версии.', 'feature_disabled' => 'Функция отключена в этой версии.', 'location' => 'Расположение', @@ -193,7 +193,7 @@ return [ 'logout' => 'Выйти', 'lookup_by_tag' => 'Поиск по тегу актива', 'maintenances' => 'Техобслуживание', - 'manage_api_keys' => 'Управление API ключами', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Производитель', 'manufacturers' => 'Производители', 'markdown' => 'облегченный язык разметки.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Выбрать все', 'search' => 'Поиск', 'select_category' => 'Выберите категорию', - 'select_datasource' => 'Выберите источник данных', + 'select_datasource' => 'Select a data source', 'select_department' => 'Выбрать департамент', 'select_depreciation' => 'Выберите тип амортизации', 'select_location' => 'Выберите местоположение', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Подписано:', 'skin' => 'Оформление', 'webhook_msg_note' => 'Уведомление будет отправлено через webhook', - 'webhook_test_msg' => 'Ого! Похоже, что интеграция :app со Snipe-IT работает!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'ДЕМО РЕЖИМ: Некоторые функции отключены.', 'site_name' => 'Название сайта', 'state' => 'Область/Регион', 'status_labels' => 'Этикетки', + 'status_label' => 'Status Label', 'status' => 'Статус', 'accept_eula' => 'Соглашение о приемке', 'supplier' => 'Поставщик', @@ -339,16 +340,16 @@ return [ 'view_all' => 'просмотреть все', 'hide_deleted' => 'Скрыть удаленное', 'email' => 'Email', - 'do_not_change' => 'Не изменять', - 'bug_report' => 'Сообщить об ошибке', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Руководство пользователя', 'setup_step_1' => 'Шаг 1', 'setup_step_2' => 'Шаг 2', 'setup_step_3' => 'Шаг 3', 'setup_step_4' => 'Шаг 4', 'setup_config_check' => 'Проверка конфигурации', - 'setup_create_database' => 'Создание таблиц базы данных', - 'setup_create_admin' => 'Создать Администратора', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Готово!', 'bulk_edit_about_to' => 'Вы собираетесь изменить следующее: ', 'checked_out' => 'Выдано', diff --git a/resources/lang/ru-RU/localizations.php b/resources/lang/ru-RU/localizations.php index 38dce0ea7..1c5963b36 100644 --- a/resources/lang/ru-RU/localizations.php +++ b/resources/lang/ru-RU/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Малайский', 'mi-NZ'=> 'Маори', 'mn-MN'=> 'Монгольский', - 'no-NO'=> 'Норвежский', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Персидский', 'pl-PL'=> 'Польский', 'pt-PT'=> 'Португальский', diff --git a/resources/lang/ru-RU/validation.php b/resources/lang/ru-RU/validation.php index 133b8e4e2..44e0e2c22 100644 --- a/resources/lang/ru-RU/validation.php +++ b/resources/lang/ru-RU/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Поле атрибута: должно присутствовать.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Ваш текущий пароль неверен', 'dumbpwd' => 'Этот пароль слишком распространен.', 'statuslabel_type' => 'Вы должны выбрать допустимый тип метки статуса', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/si-LK/account/general.php b/resources/lang/si-LK/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/si-LK/account/general.php +++ b/resources/lang/si-LK/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/si-LK/admin/locations/message.php b/resources/lang/si-LK/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/si-LK/admin/locations/message.php +++ b/resources/lang/si-LK/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/si-LK/admin/settings/general.php b/resources/lang/si-LK/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/si-LK/admin/settings/general.php +++ b/resources/lang/si-LK/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/si-LK/admin/settings/message.php b/resources/lang/si-LK/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/si-LK/admin/settings/message.php +++ b/resources/lang/si-LK/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/si-LK/button.php b/resources/lang/si-LK/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/si-LK/button.php +++ b/resources/lang/si-LK/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/si-LK/general.php b/resources/lang/si-LK/general.php index 0063808f9..9700e8f91 100644 --- a/resources/lang/si-LK/general.php +++ b/resources/lang/si-LK/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', @@ -556,7 +557,7 @@ return [ 'something_went_wrong' => 'Something went wrong with your request.', 'close' => 'Close', 'expires' => 'Expires', - 'map_fields'=> 'Map :item_type Fields', + 'map_fields'=> 'Map :item_type Field', 'remaining_var' => ':count Remaining', ]; diff --git a/resources/lang/si-LK/localizations.php b/resources/lang/si-LK/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/si-LK/localizations.php +++ b/resources/lang/si-LK/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/si-LK/validation.php b/resources/lang/si-LK/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/si-LK/validation.php +++ b/resources/lang/si-LK/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/sk-SK/account/general.php b/resources/lang/sk-SK/account/general.php index 10a9becd8..6482cdd12 100644 --- a/resources/lang/sk-SK/account/general.php +++ b/resources/lang/sk-SK/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/sk-SK/admin/locations/message.php b/resources/lang/sk-SK/admin/locations/message.php index 6814c63be..87b27da61 100644 --- a/resources/lang/sk-SK/admin/locations/message.php +++ b/resources/lang/sk-SK/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokalita neexistuje.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Táto lokalita je priradená minimálne jednému majetku, preto nemôže byť odstránená. Prosím odstráňte referenciu na túto lokalitu z príslušného majetku a skúste znovu. ', 'assoc_child_loc' => 'Táto lokalita je nadradenou minimálne jednej podradenej lokalite, preto nemôže byť odstránená. Prosím odstráňte referenciu s príslušnej lokality a skúste znovu. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/sk-SK/admin/settings/general.php b/resources/lang/sk-SK/admin/settings/general.php index 6e8f2ddfb..fab462356 100644 --- a/resources/lang/sk-SK/admin/settings/general.php +++ b/resources/lang/sk-SK/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT verzia', 'support_footer' => 'Odkaz v záhlaví na podporu ', 'support_footer_help' => 'Nastavte, kto môže vidieť prekliky na Snipe-IT stránku podpory a používateľský manuál', diff --git a/resources/lang/sk-SK/admin/settings/message.php b/resources/lang/sk-SK/admin/settings/message.php index 08d0be465..835e5a292 100644 --- a/resources/lang/sk-SK/admin/settings/message.php +++ b/resources/lang/sk-SK/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Počas čistenia sa vyskytla chyba. ', 'validation_failed' => 'Potvrdenie odstránenia nie je správne. Prosím napíšte slovo "DELETE" do políčka na potvrdenie.', diff --git a/resources/lang/sk-SK/button.php b/resources/lang/sk-SK/button.php index e69cdb748..4b61ccdae 100644 --- a/resources/lang/sk-SK/button.php +++ b/resources/lang/sk-SK/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/sk-SK/general.php b/resources/lang/sk-SK/general.php index 07ba6d077..bfababcab 100644 --- a/resources/lang/sk-SK/general.php +++ b/resources/lang/sk-SK/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Krajina', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Odstrániť', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Vymazanie zlyhalo', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Meno', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Akceptovaný typ súboru :types. Maximálna povolená veľkosť :size.|Akceptované typy súborov :types. Maximálna povolená veľkosť :size.', - 'filetypes_size_help' => 'Maximálna povolená veľkosť :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Načítavanie... prosím čakajte....', + 'loading' => 'Načítavanie... prosím čakajte...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Lokalita', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Spravovať API kľúče', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Výrobca', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Vybrať všetko', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Podpísal', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Názov stránky', 'state' => 'Štát', 'status_labels' => 'Stavy', + 'status_label' => 'Status Label', 'status' => 'Stav', 'accept_eula' => 'Licenčné podmienky', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'zobraziť všetko', 'hide_deleted' => 'Skryť zmazané', 'email' => 'E-mail', - 'do_not_change' => 'Nemeniť', - 'bug_report' => 'Nahlásiť chybu', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Užívateľský manuál', 'setup_step_1' => 'Krok 1', 'setup_step_2' => 'Krok 2', 'setup_step_3' => 'Krok 3', 'setup_step_4' => 'Krok 4', 'setup_config_check' => 'Kontrola konfigurácie', - 'setup_create_database' => 'Vytvoriť databázové tabuľky', - 'setup_create_admin' => 'Vytvoriť admin užívateľa', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Hotovo!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Odovzdané', diff --git a/resources/lang/sk-SK/localizations.php b/resources/lang/sk-SK/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/sk-SK/localizations.php +++ b/resources/lang/sk-SK/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/sk-SK/validation.php b/resources/lang/sk-SK/validation.php index 1adfb8e1d..0471be414 100644 --- a/resources/lang/sk-SK/validation.php +++ b/resources/lang/sk-SK/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/sl-SI/account/general.php b/resources/lang/sl-SI/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/sl-SI/account/general.php +++ b/resources/lang/sl-SI/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/sl-SI/admin/locations/message.php b/resources/lang/sl-SI/admin/locations/message.php index 5f3af41ed..8ba5c8ae6 100644 --- a/resources/lang/sl-SI/admin/locations/message.php +++ b/resources/lang/sl-SI/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokacija ne obstaja.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Ta lokacija je trenutno povezana z vsaj enim sredstvom in je ni mogoče izbrisati. Prosimo, posodobite svoja sredstva, da ne bodo več vsebovali te lokacije in poskusite znova. ', 'assoc_child_loc' => 'Ta lokacija je trenutno starš vsaj ene lokacije otroka in je ni mogoče izbrisati. Posodobite svoje lokacije, da ne bodo več vsebovale te lokacije in poskusite znova. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/sl-SI/admin/settings/general.php b/resources/lang/sl-SI/admin/settings/general.php index ec9e4f8ef..ea3e49276 100644 --- a/resources/lang/sl-SI/admin/settings/general.php +++ b/resources/lang/sl-SI/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT različica', 'support_footer' => 'Povezava do podpore v nogi ', 'support_footer_help' => 'Določite, kdo vidi povezave do informacij o podpori Snipe-IT in uporabniškega priročnika', diff --git a/resources/lang/sl-SI/admin/settings/message.php b/resources/lang/sl-SI/admin/settings/message.php index ff3006089..c2347b377 100644 --- a/resources/lang/sl-SI/admin/settings/message.php +++ b/resources/lang/sl-SI/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Pri čiščenju je prišlo do napake. ', 'validation_failed' => 'Vaša potrditev čiščenja je napačna. V polje za potrditev vnesite besedo »DELETE«.', diff --git a/resources/lang/sl-SI/button.php b/resources/lang/sl-SI/button.php index 5f952f67f..4f4a420a7 100644 --- a/resources/lang/sl-SI/button.php +++ b/resources/lang/sl-SI/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/sl-SI/general.php b/resources/lang/sl-SI/general.php index ad10cef23..af23d6301 100644 --- a/resources/lang/sl-SI/general.php +++ b/resources/lang/sl-SI/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Potrošni material', 'country' => 'Država', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Ustvari novo', 'created' => 'Ustvarjeno', 'created_asset' => 'ustvarjeno sredstvo', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ta aplikacija deluje v načinu proizvodnje z omogočenim odpravljanjem napak. To lahko razkrije občutljive podatke, če je vaša aplikacija dostopna zunanjemu svetu. Onemogoči način za odpravljanje napak z nastavitvijo APP_DEBUG vrednost v vaši .env datoteki do false.', 'delete' => 'Izbriši', 'delete_confirm' => 'Ali ste prepričani, da želite izbrisati :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Izbrisano', 'delete_seats' => 'Izbrisana mesta', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Priimek s prvo črko imena (smith_j@example.com)', 'firstinitial.lastname' => 'Prva črka imena s priimkom (j.smith@example.com)', 'firstnamelastinitial' => 'Ime s prvo črko priimka (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ime', 'first_name_format' => 'Ime (jane@example.com)', 'files' => 'Datoteke', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Izbriši sliko', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Naloži sliko', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Uvozi', 'import_this_file' => 'Map fields and process this file', @@ -184,7 +184,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licence', 'list_all' => 'Seznam vseh', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Vrednost tega polja ne bo shranjena v demo namestitvi.', 'feature_disabled' => 'Ta funkcija je bila onemogočena za demo namestitev.', 'location' => 'Lokacija', @@ -194,7 +194,7 @@ return [ 'logout' => 'Odjava', 'lookup_by_tag' => 'Iskanje po oznaki sredstva', 'maintenances' => 'Vzdrževanje', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Proizvajalec', 'manufacturers' => 'Proizvajalci', 'markdown' => 'To polje omogoča Github z okusom markdowna.', @@ -255,7 +255,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Iskanje', 'select_category' => 'Izberite kategorijo', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Izberite oddelek', 'select_depreciation' => 'Izberite vrsto amortizacije', 'select_location' => 'Izberite lokacijo', @@ -275,11 +275,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Preobleka', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: nekatere funkcije so onemogočene za to namestitev.', 'site_name' => 'Ime mesta', 'state' => 'Stanje', 'status_labels' => 'Oznake statusa', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Dobavitelj', @@ -340,16 +341,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'E-pošta', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Izdano', diff --git a/resources/lang/sl-SI/localizations.php b/resources/lang/sl-SI/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/sl-SI/localizations.php +++ b/resources/lang/sl-SI/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/sl-SI/validation.php b/resources/lang/sl-SI/validation.php index e6c24afe9..0c2d690e9 100644 --- a/resources/lang/sl-SI/validation.php +++ b/resources/lang/sl-SI/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Polje atribut mora biti prisotno.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Vaše trenutno geslo je napačno', 'dumbpwd' => 'To geslo je preveč pogosto.', 'statuslabel_type' => 'Izbrati morate veljavn status oznake', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/so-SO/account/general.php b/resources/lang/so-SO/account/general.php index f3a5ef4cc..d9702e5ee 100644 --- a/resources/lang/so-SO/account/general.php +++ b/resources/lang/so-SO/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/so-SO/admin/locations/message.php b/resources/lang/so-SO/admin/locations/message.php index f9676f1f3..dd84f2da7 100644 --- a/resources/lang/so-SO/admin/locations/message.php +++ b/resources/lang/so-SO/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Goobtu ma jirto.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Goobtan hadda waxa lala xidhiidhiyaa ugu yaraan hal hanti lamana tirtiri karo. Fadlan cusboonaysii hantidaada si aanay meeshan u tixraacin oo mar kale isku day. ', 'assoc_child_loc' => 'Goobtan hadda waa waalidka ugu yaraan hal meel oo caruur ah lamana tirtiri karo. Fadlan cusboonaysii goobahaaga si aanay mar dambe tixraac goobtan oo isku day mar kale. ', 'assigned_assets' => 'Hantida loo qoondeeyay', diff --git a/resources/lang/so-SO/admin/settings/general.php b/resources/lang/so-SO/admin/settings/general.php index 9eccfd2e6..1891c5de1 100644 --- a/resources/lang/so-SO/admin/settings/general.php +++ b/resources/lang/so-SO/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Nooca Snipe-IT', 'support_footer' => 'Taageerada Xidhiidhada Footer ', 'support_footer_help' => 'Sheeg cidda arkaysa isku xirka macluumaadka Taageerada Snipe-IT iyo Buugga Isticmaalayaasha', diff --git a/resources/lang/so-SO/admin/settings/message.php b/resources/lang/so-SO/admin/settings/message.php index 9a30194c8..c974c83dc 100644 --- a/resources/lang/so-SO/admin/settings/message.php +++ b/resources/lang/so-SO/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Haa, soo celi Waxaan qirayaa in tani ay dib u qori doonto xog kasta oo hadda ku jirta kaydka xogta. Tani waxay sidoo kale ka saari doontaa dhammaan isticmaalayaashaada jira (oo ay ku jirto adiga).', 'restore_confirm' => 'Ma hubtaa inaad rabto inaad ka soo celiso xogtaada: filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Khalad ayaa dhacay markii la nadiifinayo ', 'validation_failed' => 'Xaqiijinta nadiifintaadu waa khalad. Fadlan ku qor kelmadda "DELETE" sanduuqa xaqiijinta.', diff --git a/resources/lang/so-SO/button.php b/resources/lang/so-SO/button.php index a1f9ba5f0..3f019f09c 100644 --- a/resources/lang/so-SO/button.php +++ b/resources/lang/so-SO/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/so-SO/general.php b/resources/lang/so-SO/general.php index 62851654c..9c6be7feb 100644 --- a/resources/lang/so-SO/general.php +++ b/resources/lang/so-SO/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Alaabta la isticmaalo', 'country' => 'Dalka', 'could_not_restore' => 'Khalad soo celinta :item_type: :error', - 'not_deleted' => ' :item_type lama tirtirin sidaa darteed dib looma soo celin karo', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Abuur Cusub', 'created' => 'Shayga la sameeyay', 'created_asset' => 'hanti abuuray', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Codsigan waxa uu ku shaqaynayaa qaabka wax soo saarka iyada oo la furayo cilladaha Tani waxay soo bandhigi kartaa xogta xasaasiga ah haddii codsigaaga la heli karo adduunka ka baxsan. Dami qaabka qaladka adoo dejinaya APP_DEBUG qiimaha ku jira .env faylka beenta.', 'delete' => 'Tirtir', 'delete_confirm' => 'Ma hubtaa inaad rabto inaad tirtirto :item?', - 'delete_confirm_no_undo' => 'Ma hubtaa inaad rabto inaad tirtirto :item? Tan lama celin karo', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'La tirtiray', 'delete_seats' => 'Kuraasta la tirtiray', 'deletion_failed' => 'Tirtiridda waa fashilantay', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Magaca Dambe ee ugu horreeya (smith_j@example.com)', 'firstinitial.lastname' => 'Magaca Dambe ee Koowaad (j.smith@example.com)', 'firstnamelastinitial' => 'Magaca hore ee ugu dambeeya (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Magaca koowaad', 'first_name_format' => 'Magaca koowaad (jane@example.com)', 'files' => 'Faylasha', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Tirtir sawirka', 'include_deleted' => 'Ku dar Hantida la tirtiray', 'image_upload' => 'Soo rar sawirka', - 'filetypes_accepted_help' => 'Nooca faylka la aqbalay waa :types. Cabbirka ugu badan ee soo dejinta la oggol yahay waa :size.| Noocyada faylalka la aqbalay waa :types. Cabbirka gelinta ugu badan ee la ogolyahay waa :size.', - 'filetypes_size_help' => 'Cabbirka gelinta ugu badan ee la ogolyahay waa :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Sawirkan ma ahayn mid la akhriyi karo Noocyada faylalka la aqbalay waa jpg, webp, png, gif, iyo svg. Nooca faylkani waa: :mimetype.', 'import' => 'Soo dejinta', 'import_this_file' => 'Meelaha khariidad samee oo habee faylkan', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Shatiyada', 'list_all' => 'Liiska oo dhan', - 'loading' => 'Soodejinaya...fadlan sug....', + 'loading' => 'Soodejinaya...fadlan sug...', 'lock_passwords' => 'Qiimaha goobtan laguma kaydin doono rakibaadda demo.', 'feature_disabled' => 'Sifadan waxa loo damiyay rakibaadda demo', 'location' => 'Goobta', @@ -193,7 +193,7 @@ return [ 'logout' => 'Ka bax', 'lookup_by_tag' => 'Ku raadi Tag Hantiyeed', 'maintenances' => 'Dayactirka', - 'manage_api_keys' => 'Maamul furayaasha API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Soo saaraha', 'manufacturers' => 'Soosaarayaasha', 'markdown' => 'Goobtani waxay ogolaatay Github summadaynta dhadhanka.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Dhammaan dooro', 'search' => 'Raadi', 'select_category' => 'Dooro Qayb', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Dooro Waax', 'select_depreciation' => 'Dooro Nooca Qiima-dhaca', 'select_location' => 'Dooro Goob', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Saxiixay By', 'skin' => 'Maqaarka', 'webhook_msg_note' => 'Ogeysiinta waxaa lagu soo diri doonaa webhook', - 'webhook_test_msg' => 'Oh hai! Waxay u egtahay in :app is dhexgalkaaga Snipe-IT uu shaqaynayo!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Astaamaha qaar ayaa naafada u ah rakibaaddan.', 'site_name' => 'Magaca Goobta', 'state' => 'Gobolka', 'status_labels' => 'Calaamadaha heerka', + 'status_label' => 'Status Label', 'status' => 'Xaalada', 'accept_eula' => 'Heshiiska Ogolaanshaha', 'supplier' => 'Alaab-qeybiye', @@ -339,16 +340,16 @@ return [ 'view_all' => 'Daawo Dhammaan', 'hide_deleted' => 'Qari la tirtiray', 'email' => 'Iimaylka', - 'do_not_change' => 'Ha Bedelin', - 'bug_report' => 'Ka warbixi cilad', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Buugga Isticmaalaha', 'setup_step_1' => 'Tallaabada 1', 'setup_step_2' => 'Tallaabada 2', 'setup_step_3' => 'Tallaabada 3', 'setup_step_4' => 'Tallaabada 4', 'setup_config_check' => 'Hubinta qaabeynta', - 'setup_create_database' => 'Samee Shaxanka Xogta', - 'setup_create_admin' => 'Abuur Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Dhammaatay!', 'bulk_edit_about_to' => 'Waxaad ku dhowdahay inaad wax ka beddesho kuwa soo socda: ', 'checked_out' => 'La Hubiyay', diff --git a/resources/lang/so-SO/localizations.php b/resources/lang/so-SO/localizations.php index 79f6d2a1b..dedafe13c 100644 --- a/resources/lang/so-SO/localizations.php +++ b/resources/lang/so-SO/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malaay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongoliyaan', - 'no-NO'=> 'Noorwiiji', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Faaris', 'pl-PL'=> 'Boolish', 'pt-PT'=> 'Boortaqiis', diff --git a/resources/lang/so-SO/validation.php b/resources/lang/so-SO/validation.php index 6024af211..4a3aad060 100644 --- a/resources/lang/so-SO/validation.php +++ b/resources/lang/so-SO/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Goobta :attribute waa inay jirtaa', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Eraygaaga hadda jira waa khalad', 'dumbpwd' => 'Furahaas aad buu u badan yahay.', 'statuslabel_type' => 'Waa inaad doorataa nooca summada heerka ansax ah', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/sq-AL/account/general.php b/resources/lang/sq-AL/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/sq-AL/account/general.php +++ b/resources/lang/sq-AL/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/sq-AL/admin/locations/message.php b/resources/lang/sq-AL/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/sq-AL/admin/locations/message.php +++ b/resources/lang/sq-AL/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/sq-AL/admin/settings/general.php b/resources/lang/sq-AL/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/sq-AL/admin/settings/general.php +++ b/resources/lang/sq-AL/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/sq-AL/admin/settings/message.php b/resources/lang/sq-AL/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/sq-AL/admin/settings/message.php +++ b/resources/lang/sq-AL/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/sq-AL/button.php b/resources/lang/sq-AL/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/sq-AL/button.php +++ b/resources/lang/sq-AL/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/sq-AL/general.php b/resources/lang/sq-AL/general.php index b3a6b3432..444ed5408 100644 --- a/resources/lang/sq-AL/general.php +++ b/resources/lang/sq-AL/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/sq-AL/localizations.php b/resources/lang/sq-AL/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/sq-AL/localizations.php +++ b/resources/lang/sq-AL/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/sq-AL/validation.php b/resources/lang/sq-AL/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/sq-AL/validation.php +++ b/resources/lang/sq-AL/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/sr-CS/account/general.php b/resources/lang/sr-CS/account/general.php index f78fcafc0..c8ca13c3a 100644 --- a/resources/lang/sr-CS/account/general.php +++ b/resources/lang/sr-CS/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Molim vas konsultujte API podsetnik da bi ste pronašli određene API krajnje tačke i dodatnu API dokumentaciju.', 'profile_updated' => 'Nalog je uspešno izmenjen', 'no_tokens' => 'Još uvek niste napravili nijedan lični token za pristup.', + 'enable_sounds' => 'Omogući zvučne efekte', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/sr-CS/admin/locations/message.php b/resources/lang/sr-CS/admin/locations/message.php index 522a7cce4..708227d02 100644 --- a/resources/lang/sr-CS/admin/locations/message.php +++ b/resources/lang/sr-CS/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Lokacija ne postoji.', - 'assoc_users' => 'Ova lokacija trenutno se ne može obrisati jer je navedena kao lokacija barem jedne imovine ili korisnika, ima imovinu dodeljenu njoj, ili je nadlokacija druge lokacije. Molim vas izmenite vaše modele da više nisu povezane sa ovom kompanijom i pokušajte ponovo. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Ta je lokacija trenutno povezana s barem jednim resursom i ne može se izbrisati. Ažurirajte resurs da se više ne referencira na tu lokaciju i pokušajte ponovno. ', 'assoc_child_loc' => 'Ta je lokacija trenutno roditelj najmanje jednoj podredjenoj lokaciji i ne može se izbrisati. Ažurirajte svoje lokacije da se više ne referenciraju na ovu lokaciju i pokušajte ponovo. ', 'assigned_assets' => 'Dodeljena imovina', diff --git a/resources/lang/sr-CS/admin/settings/general.php b/resources/lang/sr-CS/admin/settings/general.php index ce9fe2224..ab9c3b55a 100644 --- a/resources/lang/sr-CS/admin/settings/general.php +++ b/resources/lang/sr-CS/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integracija je opciona, međutim krajnja tačka i kanal su neophodni ako želite da je koristitie. Da bi ste podesili :app integraciju, prvo morate da napravite dolaznu veb zakačku na vašem :app nalogu. Kliknite na Testiraj :app integraciju dugme da bi ste potvrdili da su podešavanja ispravna pre čuvanja. ', 'webhook_integration_help_button' => 'Onda kada sačuvate :app informacije, dugme za testiranje će se pojaviti.', 'webhook_test_help' => 'Testirajte da li je vaša integracija sa :app uspešno podešena. PRVO MORATE DA SAČUVATE IZMENJENA :app PODEŠAVANJA.', + 'shortcuts_enabled' => 'Omogući prečice', + 'shortcuts_help_text' => 'Windows: Alt + Access taster, Mac: Control + Option + Access taster', 'snipe_version' => 'Snipe-IT verzija', 'support_footer' => 'Podška za linkove u podnožju ', 'support_footer_help' => 'Navedite ko vidi veze do informacija o podršci za Snipe-IT i korisničkog priručnika', diff --git a/resources/lang/sr-CS/admin/settings/message.php b/resources/lang/sr-CS/admin/settings/message.php index 7a40d85f9..92b456051 100644 --- a/resources/lang/sr-CS/admin/settings/message.php +++ b/resources/lang/sr-CS/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Da, vrati. Potvrđujem da će ovo zameniti sve postojeće podatke koji se trenutno nalaze u bazi podataka. Ovo će takođe odjaviti sve vaše postojeće korisnike (uključujući i Vas).', 'restore_confirm' => 'Da li ste sigurni da želite da vratite svoju bazu podataka sa :filename?' ], + 'restore' => [ + 'success' => 'Vraćena je rezervna kopija vašeg sistema. Molim vas prijavite se ponovo.' + ], 'purge' => [ 'error' => 'Došlo je do pogreške prilikom brisanja. ', 'validation_failed' => 'Vaša potvrda o brisanju nije ispravna. Upišite reč "DELETE" u okvir potvrde.', diff --git a/resources/lang/sr-CS/button.php b/resources/lang/sr-CS/button.php index 0875dfa7d..80828f1d8 100644 --- a/resources/lang/sr-CS/button.php +++ b/resources/lang/sr-CS/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Dupliraj :item_type', 'edit' => 'Izmeni :item_type', 'delete' => 'Obriši :item_type', - 'restore' => 'Obriši :item_type', + 'restore' => 'Vrati :item_type', 'create' => 'Napravi novu :item_type', 'checkout' => 'Zaduži :item_type', 'checkin' => 'Razduži :item_type', diff --git a/resources/lang/sr-CS/general.php b/resources/lang/sr-CS/general.php index b8d7e0d6c..f3969fb8c 100644 --- a/resources/lang/sr-CS/general.php +++ b/resources/lang/sr-CS/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Potrošni materijal', 'country' => 'Zemlja', 'could_not_restore' => 'Greška pri vraćanju :item_type: :error', - 'not_deleted' => ':item_type nije obrisano tako da ne može biti vraćeno', + 'not_deleted' => ':item_type nije obrisano, samim time ne može biti vraćeno', 'create' => 'Napravi novi unos', 'created' => 'Stavka kreirana', 'created_asset' => 'kreirana imovina', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Izbrisati', 'delete_confirm' => 'Jeste li sigurni da želite izbrisati :item?', - 'delete_confirm_no_undo' => 'Da li ste sigurni da želite da obrišete :item? Ova radnja ne može biti poništena.', + 'delete_confirm_no_undo' => 'Da li zaista želite da obrišete :item? Ovo nije moguće poništiti.', 'deleted' => 'Izbrisano', 'delete_seats' => 'Izbrisana mesta', 'deletion_failed' => 'Neuspelo brisanje', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Prezime inicijal Imena (smith_j@example.com)', 'firstinitial.lastname' => 'Inicijal imena Prezime (j.smith@example.com)', 'firstnamelastinitial' => 'Ime inicijal Prezimena (janes@example.com)', - 'lastnamefirstname' => 'Prezime Ime (smith.jane@example.com)', + 'lastnamefirstname' => 'Prezime.Ime (smith.jane@example.com)', 'first_name' => 'Ime', 'first_name_format' => 'Ime (jane@example.com)', 'files' => 'Datoteke', @@ -156,7 +156,7 @@ return [ 'image_delete' => 'Izbriši sliku', 'include_deleted' => 'Uključi izbrisana sredstva', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Uključi izbrisana sredstva.', + 'filetypes_accepted_help' => 'Prihvatljiv tip datoteke je :types. Maksimalno dozvoljena veličina je :size.| Prihvatljivi tipovi datoteka su :types. Maksimalno dozvoljena veličina za postavljanje je :size.', 'filetypes_size_help' => 'Maksimalna dozvoljena veličina za otpremanje je :size.', 'image_filetypes_help' => 'Prihvatljivi tipovi datoteka su jpg, webp, png, gif, svg i avig. Maksimalna veličina datoteke je :size.', 'unaccepted_image_type' => 'Datoteka slike nije čitljiva. Prihvatljivi tipovi datoteka su jpg, webp, png, gif i svg. Mimetip ove datoteke je: :mimetype.', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Dostupno licenci', 'licenses' => 'Licence', 'list_all' => 'Lista svih', - 'loading' => 'Učitavanje... molim sačekajte....', + 'loading' => 'Učitavanje... molim sačekajte...', 'lock_passwords' => 'Ova vrednost polja neće biti sačuvana u demo instalaciji.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Lokacija', @@ -279,6 +279,7 @@ return [ 'site_name' => 'Naziv sajta', 'state' => 'Savezna država', 'status_labels' => 'Oznake Statusa', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Ugovor o prihvatanju', 'supplier' => 'Dobavljač', @@ -340,15 +341,15 @@ return [ 'hide_deleted' => 'Sakrij obrisano', 'email' => 'E-pošta', 'do_not_change' => 'Ne menjaj', - 'bug_report' => 'Prijavi grešku', + 'bug_report' => 'Prijavite grešku', 'user_manual' => 'Korisničko uputstvo', 'setup_step_1' => 'Korak 1', 'setup_step_2' => 'Korak 2', 'setup_step_3' => 'Korak 3', 'setup_step_4' => 'Korak 4', 'setup_config_check' => 'Provera podešavanja', - 'setup_create_database' => 'Kreiraj tabele baze podataka', - 'setup_create_admin' => 'Kreiraj admin korisnika', + 'setup_create_database' => 'Napravi tabele baze podataka', + 'setup_create_admin' => 'Napravi administratorskog korisnika', 'setup_done' => 'Završeno!', 'bulk_edit_about_to' => 'Spremate se da uredite sledeće: ', 'checked_out' => 'Zaduženo', diff --git a/resources/lang/sr-CS/localizations.php b/resources/lang/sr-CS/localizations.php index fdca53b7c..e2b472e67 100644 --- a/resources/lang/sr-CS/localizations.php +++ b/resources/lang/sr-CS/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malajski', 'mi-NZ'=> 'Maorski', 'mn-MN'=> 'Mongolski', - 'no-NO'=> 'Norveški', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norveški Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persijski', 'pl-PL'=> 'Poljski', 'pt-PT'=> 'Portugalski', diff --git a/resources/lang/sr-CS/validation.php b/resources/lang/sr-CS/validation.php index 7b50cfbcf..affeb6760 100644 --- a/resources/lang/sr-CS/validation.php +++ b/resources/lang/sr-CS/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'Polje :attribute mora da sadrži najmanje jedan simbol.', 'uncompromised' => 'Uneto :attribute se pojavilo među procurelim podacima. Molim vas unesite drugo :attribute.', ], + 'percent' => 'Minimum amortizacije mora biti između 0 i 100 kada je vrsta amortizacije procentna vrednost.', + 'present' => ':attribute polje mora biti prisutno.', 'present_if' => 'Polje :attribute mora imati vrednost kada :other sadrži :value.', 'present_unless' => 'Polje :attribute mora imati vrednost osim ako :other sadrži :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Vaša lozinka je neispravna', 'dumbpwd' => 'Lozinka nije sigurna.', 'statuslabel_type' => 'Morate odabrati ispravnu vrstu oznake statusa', + 'custom_field_not_found' => 'Izgleda da ovo polje ne postoji. Molim vas proverite imena vaših prilagođenih polja.', + 'custom_field_not_found_on_model' => 'Izgleda da ovo polje postoji, ali nije dostupno za grupu polja ovog modela imovine.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/sv-SE/account/general.php b/resources/lang/sv-SE/account/general.php index 92579db16..221b8205e 100644 --- a/resources/lang/sv-SE/account/general.php +++ b/resources/lang/sv-SE/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/sv-SE/admin/locations/message.php b/resources/lang/sv-SE/admin/locations/message.php index 22e2354e2..faf3ee316 100644 --- a/resources/lang/sv-SE/admin/locations/message.php +++ b/resources/lang/sv-SE/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Platsen finns inte.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Platsen är associerad med minst en tillgång och kan inte tas bort. Vänligen uppdatera dina tillgångar så dom inte refererar till denna plats och försök igen. ', 'assoc_child_loc' => 'Denna plats är för närvarande överliggande för minst en annan plats och kan inte tas bort. Vänligen uppdatera dina platser så dom inte längre refererar till denna och försök igen.', 'assigned_assets' => 'Tilldelade tillgångar', diff --git a/resources/lang/sv-SE/admin/settings/general.php b/resources/lang/sv-SE/admin/settings/general.php index 4e8bb9cc6..bae5fb253 100644 --- a/resources/lang/sv-SE/admin/settings/general.php +++ b/resources/lang/sv-SE/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration är frivilligt, men slutpunkt och kanal krävs om du vill använda den. För att konfigurera :app integration, måste du först skapa en inkommande webhook på ditt :app konto. Klicka på Test :app Integration -knappen för att bekräfta att dina inställningar är korrekta innan du sparar. ', 'webhook_integration_help_button' => 'När du har sparat information om :app visas en testknapp.', 'webhook_test_help' => 'Testa om din :app integration är korrekt konfigurerad. DU MÅSTE SPARA DIN UPPDATERAD :app INSTÄLLNINGAR FÖRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT-versionen', 'support_footer' => 'Stöd länkar i sidfot ', 'support_footer_help' => 'Ange vem som kan se länkarna till Snipe-IT Support info och användarmanual', diff --git a/resources/lang/sv-SE/admin/settings/message.php b/resources/lang/sv-SE/admin/settings/message.php index 7e81ec13f..7eb35531b 100644 --- a/resources/lang/sv-SE/admin/settings/message.php +++ b/resources/lang/sv-SE/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Ja, återställ den. Jag är medveten att detta kommer att skriva över befintliga data som finns i databasen. Detta kommer också att logga ut alla dina befintliga användare (inklusive dig).', 'restore_confirm' => 'Är du säker på att du vill återställa din databas från :filnamn?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Ett fel har uppstått vid spolning.', 'validation_failed' => 'Din rengöringsbekräftelse är felaktig. Vänligen skriv ordet "DELETE" i bekräftelsen rutan.', diff --git a/resources/lang/sv-SE/button.php b/resources/lang/sv-SE/button.php index 090504b79..1b153d8d4 100644 --- a/resources/lang/sv-SE/button.php +++ b/resources/lang/sv-SE/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/sv-SE/general.php b/resources/lang/sv-SE/general.php index 1cd297d4d..ef7e2b2cc 100644 --- a/resources/lang/sv-SE/general.php +++ b/resources/lang/sv-SE/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Förbrukningsmaterial', 'country' => 'Land', 'could_not_restore' => 'Fel vid återställning av :item_type: :error', - 'not_deleted' => ':item_type är inte borttagen så den kan inte återställas', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Skapa Ny', 'created' => 'Artikel skapad', 'created_asset' => 'skapa tillgång', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Programmet körs i produktionsläge med debugging aktiverat. Detta kan avslöja känslig data om din ansökan är tillgänglig för omvärlden. Inaktivera felsökningsläge genom att ange värdet APP_DEBUG i filen .env till false.', 'delete' => 'Ta bort', 'delete_confirm' => 'Är du säker på att du vill radera: föremål?', - 'delete_confirm_no_undo' => 'Är du säker på att du vill ta bort :item? Detta kan inte ångras.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Raderad', 'delete_seats' => 'Borttagna platser', 'deletion_failed' => 'Borttagning misslyckades', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Efternamn Första Initialen (smith_j@example.com)', 'firstinitial.lastname' => 'Första Initialen Efternamn (j.smith@example.com)', 'firstnamelastinitial' => 'Efternamn Första Initialen (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Förnamn', 'first_name_format' => 'Förnamn (jane@example.com)', 'files' => 'Filer', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Ta bort Bild', 'include_deleted' => 'Inkludera borttagna tillgångar', 'image_upload' => 'Ladda upp Bild', - 'filetypes_accepted_help' => 'Accepterad filtyp är :types. Max tillåten uppladdningsstorlek är :size. Accepterade filtyper är :types. Max tillåten uppladdningsstorlek är :size.', - 'filetypes_size_help' => 'Max tillåten uppladdningsstorlek är :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Denna bildfil kunde inte läsas. Godkända filtyper är jpg, webp, png, gif, och svg. Filens mimetyp är: :mimetype.', 'import' => 'Importera', 'import_this_file' => 'Karta fält och bearbeta denna fil', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Tillgängliga licenser', 'licenses' => 'Licenser', 'list_all' => 'Lista Alla', - 'loading' => 'Läser in... var god vänta....', + 'loading' => 'Läser in... var god vänta...', 'lock_passwords' => 'Detta fältvärde kommer inte att sparas i en demoinstallation.', 'feature_disabled' => 'Den här funktionen har inaktiverats för demoinstallationen.', 'location' => 'Plats', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logga ut', 'lookup_by_tag' => 'Lookup med tillgångslabel', 'maintenances' => 'Underhåll', - 'manage_api_keys' => 'Hantera API-nycklar', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Tillverkare', 'manufacturers' => 'Tillverkare', 'markdown' => 'Detta fält tillåter Github smaksatt markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Markera alla', 'search' => 'Sök', 'select_category' => 'Välj en kategori', - 'select_datasource' => 'Välj en datakurs', + 'select_datasource' => 'Select a data source', 'select_department' => 'Välj en avdelning', 'select_depreciation' => 'Välj en avskrivningstyp', 'select_location' => 'Välj en plats', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signerad av', 'skin' => 'Skal', 'webhook_msg_note' => 'Ett meddelande kommer att skickas via webhook', - 'webhook_test_msg' => 'Hej! Ser ut som din :app integration med Snipe-IT fungerar!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Vissa funktioner är inaktiverade för den här installationen.', 'site_name' => 'Sidnamn', 'state' => 'stat', 'status_labels' => 'Statusetiketter', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptansavtal', 'supplier' => 'Leverantör', @@ -339,16 +340,16 @@ return [ 'view_all' => 'visa alla', 'hide_deleted' => 'Visa Borttagna', 'email' => 'E-post', - 'do_not_change' => 'Ändra inte', - 'bug_report' => 'Rapportera ett fel', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Användarmanual', 'setup_step_1' => 'Steg 1', 'setup_step_2' => 'Steg 2', 'setup_step_3' => 'Steg 3', 'setup_step_4' => 'Steg 4', 'setup_config_check' => 'Konfigurationskontroll', - 'setup_create_database' => 'Skapa databastabeller', - 'setup_create_admin' => 'Skapa admin-användare', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Slutförd!', 'bulk_edit_about_to' => 'Du håller på att redigera följande: ', 'checked_out' => 'Låna ut', diff --git a/resources/lang/sv-SE/localizations.php b/resources/lang/sv-SE/localizations.php index 2dc003fe7..e72abe530 100644 --- a/resources/lang/sv-SE/localizations.php +++ b/resources/lang/sv-SE/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malajiska', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongoliska', - 'no-NO'=> 'Norska', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persiska', 'pl-PL'=> 'Polska', 'pt-PT'=> 'Portugisiska', diff --git a/resources/lang/sv-SE/validation.php b/resources/lang/sv-SE/validation.php index 6be759c15..3702af987 100644 --- a/resources/lang/sv-SE/validation.php +++ b/resources/lang/sv-SE/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':attribute fältet måste finnas.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Ditt nuvarande lösenord är felaktigt', 'dumbpwd' => 'Det angivna lösenordet är för vanligt.', 'statuslabel_type' => 'Du måste ange en giltig typ av statusetikett', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ta-IN/account/general.php b/resources/lang/ta-IN/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ta-IN/account/general.php +++ b/resources/lang/ta-IN/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ta-IN/admin/locations/message.php b/resources/lang/ta-IN/admin/locations/message.php index 88f392b2e..c84cf8ab3 100644 --- a/resources/lang/ta-IN/admin/locations/message.php +++ b/resources/lang/ta-IN/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'இருப்பிடம் இல்லை.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'இந்த இடம் தற்போது குறைந்தது ஒரு சொத்துடன் தொடர்புடையது மற்றும் நீக்கப்பட முடியாது. இந்த இருப்பிடத்தை இனி குறிப்பிடாமல் உங்கள் சொத்துக்களை புதுப்பித்து மீண்டும் முயற்சிக்கவும்.', 'assoc_child_loc' => 'இந்த இடம் தற்போது குறைந்தது ஒரு குழந்தையின் இருப்பிடத்தின் பெற்றோர் மற்றும் அதை நீக்க முடியாது. இந்த இருப்பிடத்தை இனி குறிப்பிடாமல் இருக்க உங்கள் இருப்பிடங்களை புதுப்பித்து மீண்டும் முயற்சிக்கவும்.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ta-IN/admin/settings/general.php b/resources/lang/ta-IN/admin/settings/general.php index 7568f5087..1b500919b 100644 --- a/resources/lang/ta-IN/admin/settings/general.php +++ b/resources/lang/ta-IN/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'ஸ்னாப்-ஐடி பதிப்பு', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/ta-IN/admin/settings/message.php b/resources/lang/ta-IN/admin/settings/message.php index a7511fe5e..a5df00e8c 100644 --- a/resources/lang/ta-IN/admin/settings/message.php +++ b/resources/lang/ta-IN/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'அகற்றும் போது பிழை ஏற்பட்டது.', 'validation_failed' => 'உங்கள் தூய்மைப்படுத்தல் உறுதிப்படுத்தல் தவறானது. உறுதிப்படுத்தல் பெட்டியில் "DELETE" என்ற வார்த்தையை தயவுசெய்து தட்டச்சு செய்யவும்.', diff --git a/resources/lang/ta-IN/button.php b/resources/lang/ta-IN/button.php index 7098eaf7f..d000cac87 100644 --- a/resources/lang/ta-IN/button.php +++ b/resources/lang/ta-IN/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ta-IN/general.php b/resources/lang/ta-IN/general.php index a6689be76..07ba4a726 100644 --- a/resources/lang/ta-IN/general.php +++ b/resources/lang/ta-IN/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'நுகர்பொருள்கள்', 'country' => 'நாடு', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'புதிதாக உருவாக்கு', 'created' => 'உருப்படி உருவாக்கப்பட்டது', 'created_asset' => 'சொத்து உருவாக்கப்பட்டது', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'இயல்பான பிழைத்திருத்தத்துடன் இந்த பயன்பாட்டை உற்பத்தி முறையில் இயக்கும். வெளிப்புற உலகத்திற்கு உங்கள் பயன்பாடு அணுகக்கூடியதாக இருந்தால் இது முக்கியமான தரவுகளை அம்பலப்படுத்தலாம். உங்கள் .env கோப்பில் false இல் APP_DEBUG மதிப்பை அமைப்பதன் மூலம் பிழைத்திருத்த முடையை முடக்கு.', 'delete' => 'அழி', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'நீக்கப்பட்ட', 'delete_seats' => 'நீக்கப்பட்ட இடங்கள்', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'முதல் பெயர்', 'first_name_format' => 'முதல் பெயர் (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'படத்தை நீக்கு', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'படத்தை பதிவேற்றம் செய்யவும்', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'இறக்குமதி', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'உரிமங்கள்', 'list_all' => 'அனைத்தையும் பட்டியலிடு', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'டெமோ நிறுவலுக்கு இந்த அம்சம் முடக்கப்பட்டுள்ளது.', 'location' => 'இருப்பிடம்', @@ -193,7 +193,7 @@ return [ 'logout' => 'வெளியேறு', 'lookup_by_tag' => 'சொத்து டேக் மூலம் பார்', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'உற்பத்தியாளர்', 'manufacturers' => 'உற்பத்தியாளர்கள்', 'markdown' => 'இந்தத் துறையில் ஜிடிப் ருசியான மார்க் டவுன் ஐ அனுமதிக்கிறது.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'தேடல்', 'select_category' => 'ஓர் வகையறாவை தேர்ந்தெடு', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'ஒரு துறையைத் தேர்ந்தெடுக்கவும்', 'select_depreciation' => 'தேய்மான வகை ஒன்றைத் தேர்ந்தெடுக்கவும்', 'select_location' => 'இருப்பிடம் தேர்ந்தெடுக்கவும்', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'டெமோ முறை: இந்த நிறுவலுக்கு சில அம்சங்கள் முடக்கப்பட்டுள்ளன.', 'site_name' => 'தள பெயர்', 'state' => 'நிலை', 'status_labels' => 'நிலை லேபிள்கள்', + 'status_label' => 'Status Label', 'status' => 'நிலைமை', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'சப்ளையர்', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'மின்னஞ்சல்', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'ஒப்படைக்கப்பட்டது', diff --git a/resources/lang/ta-IN/localizations.php b/resources/lang/ta-IN/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/ta-IN/localizations.php +++ b/resources/lang/ta-IN/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ta-IN/validation.php b/resources/lang/ta-IN/validation.php index 504768b06..897c4ac11 100644 --- a/resources/lang/ta-IN/validation.php +++ b/resources/lang/ta-IN/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ': பண்புக்கூறு களஞ்சியம் இருக்க வேண்டும்.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'உங்கள் தற்போதைய கடவுச்சொல் தவறானது', 'dumbpwd' => 'அந்த கடவுச்சொல் மிகவும் பொதுவானது.', 'statuslabel_type' => 'செல்லுபடியாகும் நிலை லேபிள் வகை தேர்ந்தெடுக்க வேண்டும்', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/th-TH/account/general.php b/resources/lang/th-TH/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/th-TH/account/general.php +++ b/resources/lang/th-TH/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/th-TH/admin/accessories/message.php b/resources/lang/th-TH/admin/accessories/message.php index b5f86c818..a11d9bc43 100644 --- a/resources/lang/th-TH/admin/accessories/message.php +++ b/resources/lang/th-TH/admin/accessories/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => '[;id] อุปกรณ์เสริม ไม่มีอยู่', - 'not_found' => 'That accessory was not found.', + 'not_found' => 'ไม่พบอุปกรณ์เสริมนั้น', 'assoc_users' => 'อุปกรณ์เสริมนี้ได้เช็คเอ้าท์ให้ผู้ใช้งานแล้วจำนวน :count รายการในปัจจุบัน กรุณาเช็คอินอุปกรณ์เสริม และลองอีกครั้ง ', 'create' => array( @@ -25,10 +25,10 @@ return array( 'checkout' => array( 'error' => 'อุปกรณ์เสริมยังไม่ถูกเช็คเอ้าท์ กรุณาลองอีกครั้ง', 'success' => 'อุปกรณ์เสริมเช็คเอ้าท์เรียบร้อยแล้ว', - 'unavailable' => 'Accessory is not available for checkout. Check quantity available', + 'unavailable' => 'ไม่มีอุปกรณ์เสริมสำหรับการชำระเงิน ตรวจสอบปริมาณที่มีอยู่', 'user_does_not_exist' => 'ผู้ใช้งานไม่ถูกต้อง กรุณาลองใหม่อีกครั้ง', 'checkout_qty' => array( - 'lte' => 'There is currently only one available accessory of this type, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.|There are :number_currently_remaining total available accessories, and you are trying to check out :checkout_qty. Please adjust the checkout quantity or the total stock of this accessory and try again.', + 'lte' => ':checkout_qty โปรดปรับจำนวนในการชำระเงินหรือจำนวนในสต็อกของอุปกรณ์เสริมนี้แล้วลองอีกครั้ง|มีอุปกรณ์เสริมที่มีอยู่ :number_currently_remaining ทั้งหมด และคุณกำลังพยายามตรวจสอบ :checkout_qty โปรดปรับปริมาณการชำระเงินหรือสต็อกรวมของอุปกรณ์เสริมนี้แล้วลองอีกครั้ง', ), ), diff --git a/resources/lang/th-TH/admin/categories/general.php b/resources/lang/th-TH/admin/categories/general.php index 09161697f..096b62996 100644 --- a/resources/lang/th-TH/admin/categories/general.php +++ b/resources/lang/th-TH/admin/categories/general.php @@ -8,8 +8,8 @@ return array( 'clone' => 'คัดลอกหมวดหมู่', 'create' => 'สร้างหมวดหมู่', 'edit' => 'แก้ไขหมวดหมู่', - 'email_will_be_sent_due_to_global_eula' => 'An email will be sent to the user because the global EULA is being used.', - 'email_will_be_sent_due_to_category_eula' => 'An email will be sent to the user because a EULA is set for this category.', + 'email_will_be_sent_due_to_global_eula' => 'อีเมลจะถูกส่งไปยังผู้ใช้เนื่องจากมีการใช้งาน EULA ทั่วโลก', + 'email_will_be_sent_due_to_category_eula' => 'อีเมลจะถูกส่งไปยังผู้ใช้เนื่องจากมีการตั้งค่า EULA สำหรับหมวดหมู่นี้', 'eula_text' => 'หมวดหมู่ข้อกำหนดการใช้งาน', 'eula_text_help' => 'ส่วนนี้อนุญาตให้คุณสามารถทำการปรับแต่งข้อตกลงการใช้งานสำหรับกำหนดชนิดของทรัพย์สินได้ หากคุณมีข้อตกลงการใช้งานเพียงหนึ่ง หรือเรื่องเดียวที่ใช้ครอบคลุมทรัพย์สินของคุณทั้งหมด คุณสามารถตั้งค่าให้เป็นการใช้งานหลัก โดยการทำเครื่องหมายในช่องด้านล่างนี้', 'name' => 'ชื่อหมวดหมู่', diff --git a/resources/lang/th-TH/admin/categories/message.php b/resources/lang/th-TH/admin/categories/message.php index d75989743..a779805ca 100644 --- a/resources/lang/th-TH/admin/categories/message.php +++ b/resources/lang/th-TH/admin/categories/message.php @@ -14,7 +14,7 @@ return array( 'update' => array( 'error' => 'ยังไม่ได้ปรับปรุงหมวดหมู่ กรุณาลองอีกครั้ง', 'success' => 'ปรับปรุงหมวดหมู่เรียบร้อยแล้ว.', - 'cannot_change_category_type' => 'You cannot change the category type once it has been created', + 'cannot_change_category_type' => 'คุณไม่สามารถเปลี่ยนประเภทหมวดหมู่ได้เมื่อสร้างแล้ว', ), 'delete' => array( diff --git a/resources/lang/th-TH/admin/companies/table.php b/resources/lang/th-TH/admin/companies/table.php index 7424d2809..341e68107 100644 --- a/resources/lang/th-TH/admin/companies/table.php +++ b/resources/lang/th-TH/admin/companies/table.php @@ -2,9 +2,9 @@ return array( 'companies' => 'บริษัท', 'create' => 'สร้าง บริษัท', - 'email' => 'Company Email', + 'email' => 'อีเมล์บริษัท', 'title' => 'บริษัท', - 'phone' => 'Company Phone', + 'phone' => 'โทรศัพท์บริษัท', 'update' => 'ปรับปรุง บริษัท', 'name' => 'ชื่อ บริษัท', 'id' => 'ID', diff --git a/resources/lang/th-TH/admin/components/general.php b/resources/lang/th-TH/admin/components/general.php index dc19e7119..b4bd2a9bb 100644 --- a/resources/lang/th-TH/admin/components/general.php +++ b/resources/lang/th-TH/admin/components/general.php @@ -12,5 +12,5 @@ return array( 'remaining' => 'ที่เหลืออยู่', 'total' => 'ทั้งหมด', 'update' => 'อัพเดตคอมโพเนนต์', - 'checkin_limit' => 'Amount checked in must be equal to or less than :assigned_qty' + 'checkin_limit' => 'จำนวนเงินที่เช็คอินจะต้องเท่ากับหรือน้อยกว่า :assigned_qty' ); diff --git a/resources/lang/th-TH/admin/locations/message.php b/resources/lang/th-TH/admin/locations/message.php index f481aa2b0..a547a059e 100644 --- a/resources/lang/th-TH/admin/locations/message.php +++ b/resources/lang/th-TH/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'ไม่มีสถานที่นี้.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'สถานที่นี้ถูกใช้งานหรือเกี่ยวข้องอยู่กับผู้ใช้งานคนใดคนหนึ่ง และไม่สามารถลบได้ กรุณาปรับปรุงผู้ใช้งานของท่านไม่ให้มีส่วนเกี่ยวข้องกับสถานที่นี้ และลองอีกครั้ง. ', 'assoc_child_loc' => 'สถานที่นี้ถูกใช้งานหรือเกี่ยวข้องอยู่กับหมวดสถานที่ใดที่หนึ่ง และไม่สามารถลบได้ กรุณาปรับปรุงสถานที่ของท่านไม่ให้มีส่วนเกี่ยวข้องกับหมวดสถานที่นี้ และลองอีกครั้ง. ', 'assigned_assets' => 'สินทรัพย์ถูกมอบหมายแล้ว', diff --git a/resources/lang/th-TH/admin/settings/general.php b/resources/lang/th-TH/admin/settings/general.php index 05dde6ff6..031882f62 100644 --- a/resources/lang/th-TH/admin/settings/general.php +++ b/resources/lang/th-TH/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'ลิงค์ในส่วนท้ายของหน้า ', 'support_footer_help' => 'ระบุผู้ที่เห็นลิงก์ไปยังข้อมูลสนับสนุน Snipe-IT และคู่มือผู้ใช้', diff --git a/resources/lang/th-TH/admin/settings/message.php b/resources/lang/th-TH/admin/settings/message.php index 2c6576c8e..738c80e17 100644 --- a/resources/lang/th-TH/admin/settings/message.php +++ b/resources/lang/th-TH/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'เกิดข้อผิดพลาดขณะล้างข้อมูล', 'validation_failed' => 'การยืนยันการล้างข้อมูลของคุณไม่ถูกต้อง โปรดพิมพ์คำว่า "DELETE" ในช่องยืนยัน', diff --git a/resources/lang/th-TH/button.php b/resources/lang/th-TH/button.php index 5fe43c81a..37567516b 100644 --- a/resources/lang/th-TH/button.php +++ b/resources/lang/th-TH/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/th-TH/general.php b/resources/lang/th-TH/general.php index 382db65e2..cc08313a4 100644 --- a/resources/lang/th-TH/general.php +++ b/resources/lang/th-TH/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'การใช้งาน', 'country' => 'ประเทศ', 'could_not_restore' => 'การกู้คืนผิดพลาด', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'สร้างใหม่', 'created' => 'สร้างรายการแล้ว', 'created_asset' => 'ทรัพย์สินที่ถูกสร้าง', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'แอ็พพลิเคชันนี้กำลังทำงานในโหมดการผลิตโดยเปิดใช้งานดีบัก ข้อมูลนี้สามารถเปิดเผยข้อมูลที่ละเอียดอ่อนหากแอปพลิเคชันของคุณสามารถเข้าถึงโลกภายนอกได้ ปิดใช้งานโหมดดีบั๊กโดยการตั้งค่า APP_DEBUG ในไฟล์ .env ของคุณเป็น false', 'delete' => 'ลบ', 'delete_confirm' => 'คุณแน่ใจหรือไม่ว่าต้องการลบ?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'ลบแล้ว', 'delete_seats' => 'ลบที่นั่งแล้ว', 'deletion_failed' => 'การลบล้มเหลว', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'นามสกุล อักษรต้นชื่อ (smith_j@example.com)', 'firstinitial.lastname' => 'อักษรต้นชื่อ นามสกุล (j.smith@example.com)', 'firstnamelastinitial' => 'ชื่อ อักษรต้นนามสกุล (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'ชื่อจริง', 'first_name_format' => 'ชื่อ (jane@example.com)', 'files' => 'ไฟล์', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'ลบรูปภาพประจำตัว', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'อัพโหลดภาพ', - 'filetypes_accepted_help' => 'ชนิดไฟล๋ที่ยอมรับ :types ขนาดไฟล์ใหญ่สุดที่ให้อัพโหลดได้ :size |ชนิดไฟล๋ที่ยอมรับ :types ขนาดไฟล์ใหญ่สุดที่ให้อัพโหลดได้ :size', - 'filetypes_size_help' => 'ขนาดไฟล์ใหญ่สุดที่ให้อัพโหลดได้ :size', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'นำเข้า', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'ลิขสิทธิ์', 'list_all' => 'รายการทั้งหมด', - 'loading' => 'กำลังโหลด กรุณารอสักครู่...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'ข้อมูลในรายการนี้จะไม่ถูกบันทึกเพราะเป็นระบบตัวอย่าง (demo installation)', 'feature_disabled' => 'คุณลักษณะนี้ถูกปิดใช้งานสำหรับการติดตั้งแบบสาธิต', 'location' => 'สถานที่', @@ -193,7 +193,7 @@ return [ 'logout' => 'ออกจากระบบ', 'lookup_by_tag' => 'การค้นหาตามแท็กเนื้อหา', 'maintenances' => 'ซ่อมบำรุง', - 'manage_api_keys' => 'จัดการ API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'ผู้ผลิต', 'manufacturers' => 'ผู้ผลิต', 'markdown' => 'ฟิลด์นี้ช่วยให้ Github markdown markdown', @@ -254,7 +254,7 @@ return [ 'select_all' => 'เลือกทั้งหมด', 'search' => 'ค้นหา', 'select_category' => 'เลือกหมวด', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'เลือกแผนก', 'select_depreciation' => 'เลือกประเภทค่าเสื่อมราคา', 'select_location' => 'เลือกที่ตั้ง', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'รูปแบบ/เทมเพลต', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: คุณลักษณะบางอย่างถูกปิดใช้งานสำหรับการติดตั้งนี้', 'site_name' => 'ชื่อไซต์', 'state' => 'รัฐ', 'status_labels' => 'ป้ายสถานะ', + 'status_label' => 'Status Label', 'status' => 'สถานะ', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'ผู้ผลิต', @@ -339,16 +340,16 @@ return [ 'view_all' => 'ดูทั้งหมด', 'hide_deleted' => 'ซ่อนที่ถูกลบ', 'email' => 'อีเมล', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'รายงานจุดบกพร่อง', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'คู่มือ', 'setup_step_1' => 'ขั้นตอนที่ 1', 'setup_step_2' => 'ขั้นตอนที่ 2', 'setup_step_3' => 'ขั้นตอนที่ 3', 'setup_step_4' => 'ขั้นตอนที่ 4', 'setup_config_check' => 'การตรวจสอบการตั้งค่า', - 'setup_create_database' => 'สร้างตารางฐานข้อมูล', - 'setup_create_admin' => 'สร้างผู้ดูแลระบบ', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'เสร็จสิ้น', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'ส่งมอบ', diff --git a/resources/lang/th-TH/localizations.php b/resources/lang/th-TH/localizations.php index 37cc2ebdf..ed1cb1e0a 100644 --- a/resources/lang/th-TH/localizations.php +++ b/resources/lang/th-TH/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/th-TH/validation.php b/resources/lang/th-TH/validation.php index e92dff126..d0d2a55dd 100644 --- a/resources/lang/th-TH/validation.php +++ b/resources/lang/th-TH/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'ฟิลด์แอ็ตทริบิวต์: ต้องมีอยู่', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'รหัสผ่านปัจจุบันของคุณไม่ถูกต้อง', 'dumbpwd' => 'รหัสผ่านที่ใช้กันอยู่ทั่วไป', 'statuslabel_type' => 'คุณต้องเลือกประเภทป้ายสถานะที่ถูกต้อง', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/tl-PH/account/general.php b/resources/lang/tl-PH/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/tl-PH/account/general.php +++ b/resources/lang/tl-PH/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/tl-PH/admin/locations/message.php b/resources/lang/tl-PH/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/tl-PH/admin/locations/message.php +++ b/resources/lang/tl-PH/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/tl-PH/admin/settings/general.php b/resources/lang/tl-PH/admin/settings/general.php index 9bddb75ef..4a15dd3f4 100644 --- a/resources/lang/tl-PH/admin/settings/general.php +++ b/resources/lang/tl-PH/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/tl-PH/admin/settings/message.php b/resources/lang/tl-PH/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/tl-PH/admin/settings/message.php +++ b/resources/lang/tl-PH/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/tl-PH/button.php b/resources/lang/tl-PH/button.php index 96c4a2b34..367aac878 100644 --- a/resources/lang/tl-PH/button.php +++ b/resources/lang/tl-PH/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/tl-PH/general.php b/resources/lang/tl-PH/general.php index b49449224..c36771dfb 100644 --- a/resources/lang/tl-PH/general.php +++ b/resources/lang/tl-PH/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/tl-PH/localizations.php b/resources/lang/tl-PH/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/tl-PH/localizations.php +++ b/resources/lang/tl-PH/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/tl-PH/validation.php b/resources/lang/tl-PH/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/tl-PH/validation.php +++ b/resources/lang/tl-PH/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/tr-TR/account/general.php b/resources/lang/tr-TR/account/general.php index 4545d5a4b..c6f5c1166 100644 --- a/resources/lang/tr-TR/account/general.php +++ b/resources/lang/tr-TR/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/tr-TR/admin/licenses/message.php b/resources/lang/tr-TR/admin/licenses/message.php index 9d4a40bc5..3ddca88f2 100644 --- a/resources/lang/tr-TR/admin/licenses/message.php +++ b/resources/lang/tr-TR/admin/licenses/message.php @@ -44,7 +44,7 @@ return array( 'error' => 'Lisans çıkışı yapılırken hata oluştu. Lütfen tekrar deneyin.', 'success' => 'Lisans çıkışı yapıldı.', 'not_enough_seats' => 'Ödeme için yeterli sayıda lisans yeri yok', - 'mismatch' => 'Girdiğiniz bu lisans türü lisans ile eşleşmiyor.', + 'mismatch' => 'Girdiğiniz bu lisans türü lisans ile eşleşmiyor', 'unavailable' => 'Bu varlığı atayamazsınız.', ), diff --git a/resources/lang/tr-TR/admin/locations/message.php b/resources/lang/tr-TR/admin/locations/message.php index c3e6658c8..57b2acf2f 100644 --- a/resources/lang/tr-TR/admin/locations/message.php +++ b/resources/lang/tr-TR/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Konum mevcut değil.', - 'assoc_users' => 'Bu bölüm silinemez, çünkü herhangi bir varlığın yada kullanıcının bilgisi yazılmakta. Bu haneyi kullanan kayıtları ve şirket bilgilerini murakabe ederek tekrar deneyin.', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Bu konum şu anda en az bir varlık ile ilişkili ve silinemez. Lütfen artık bu konumu kullanabilmek için varlık konumlarını güncelleştirin.', 'assoc_child_loc' => 'Bu konum şu anda en az bir alt konum üstüdür ve silinemez. Lütfen artık bu konuma ait alt konumları güncelleyin. ', 'assigned_assets' => 'Atanan Varlıklar', diff --git a/resources/lang/tr-TR/admin/settings/general.php b/resources/lang/tr-TR/admin/settings/general.php index 1cf10640a..a0b9de888 100644 --- a/resources/lang/tr-TR/admin/settings/general.php +++ b/resources/lang/tr-TR/admin/settings/general.php @@ -219,6 +219,8 @@ return [ gelen bir webhook oluştur:app hesabınızda. TıklaTest :app EntegrasyonuKaydetmeden önce ayarlarınızın doğru olduğunu onaylamak için düğmesine basın. ', 'webhook_integration_help_button' => ':app bilgilerinizi kaydettikten sonra bir test düğmesi görünecektir.', 'webhook_test_help' => ':app entegrasyonunuzun doğru yapılandırılıp yapılandırılmadığını test edin. ÖNCE GÜNCELLENMİŞ :app AYARLARINIZI KAYDETMENİZ GEREKİR.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Destek Bağlantıları Altbilgisi ', 'support_footer_help' => 'Snipe-IT destek, bilgi ve Kullanıcı Kılavuzu linklerini kimin göreceğini seçin', @@ -376,7 +378,7 @@ return [ 'timezone' => 'Zaman Dilimi', 'profile_edit' => 'Edit Profile', 'profile_edit_help' => 'Allow users to edit their own profiles.', - 'default_avatar' => 'Varsayılan olarak kullanılacak avatarınızı yükleyin.', + 'default_avatar' => 'Varsayılan olarak kullanılacak avatarınızı yükleyin', 'default_avatar_help' => 'Kullanıcı profil fotoğrafı yüklememişse bu görsel profil fotoğrafı olacak.', 'restore_default_avatar' => 'Restore original system default avatar', 'restore_default_avatar_help' => '', diff --git a/resources/lang/tr-TR/admin/settings/message.php b/resources/lang/tr-TR/admin/settings/message.php index 7c922fbcd..026b5554b 100644 --- a/resources/lang/tr-TR/admin/settings/message.php +++ b/resources/lang/tr-TR/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Evet, geri yükleyin. Bunun, şu anda veritabanında bulunan mevcut verilerin üzerine yazılacağını kabul ediyorum. Bu aynı zamanda (siz dahil) tüm mevcut kullanıcılarınızın oturumunu kapatacaktır.', 'restore_confirm' => 'Veritabanınızı :filename\'den geri yüklemek istediğinizden emin misiniz?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Temizleme sırasında bir hata oluştu. ', 'validation_failed' => 'Temizle onay kodu yanlıştır. Lütfen onay kutusuna "DELETE" yazın.', diff --git a/resources/lang/tr-TR/button.php b/resources/lang/tr-TR/button.php index 58b4475b0..3d424aabb 100644 --- a/resources/lang/tr-TR/button.php +++ b/resources/lang/tr-TR/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/tr-TR/general.php b/resources/lang/tr-TR/general.php index 9b68f57a6..ffe045bad 100644 --- a/resources/lang/tr-TR/general.php +++ b/resources/lang/tr-TR/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Sarf Malzemeleri', 'country' => 'Ülke', 'could_not_restore' => ':item_type: :error geri yüklenirken hata oluştu', - 'not_deleted' => ':item_type silinmediği için geri yüklenemez', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Yeni Oluştur', 'created' => 'Öğe oluşturuldu', 'created_asset' => 'Oluşturulmuş Demirbaş', @@ -101,7 +101,7 @@ Context | Request Context ', 'delete' => 'Sil', 'delete_confirm' => 'Öğeyi silmek istediğinizden emin misiniz?', - 'delete_confirm_no_undo' => ':item\'i silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Silinmiş', 'delete_seats' => 'Silinen Kullanıcı Lisansı Sayısı', 'deletion_failed' => 'Silme başarısız', @@ -137,7 +137,7 @@ Context | Request Context 'lastname_firstinitial' => 'Soyad ve Adın İlk Harfi (smith_j@example.com)', 'firstinitial.lastname' => 'Adın İlk Harfi ve Soyad (j.smith@example.com)', 'firstnamelastinitial' => 'Ad ve Soyadın İlk Harfi (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ad', 'first_name_format' => 'Ad (jane@example.com)', 'files' => 'Dosyalar', @@ -159,9 +159,9 @@ Context | Request Context 'image_delete' => 'Resmi sil', 'include_deleted' => 'Silinen Varlıkları Dahil Et', 'image_upload' => 'Resim yükle', - 'filetypes_accepted_help' => 'İzin verilen edilen dosya türü :types. İzin verilen asgari yükleme boyutu :size.|İzin verilen edilen dosya türleri:types. İzin verilen asgari yükleme boyutu :size.', - 'filetypes_size_help' => 'İzin verilen asgari yükleme boyutu :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Bu dosya okunamadı. Kabul edilen dosya türleri jpg, webp, png, gif ve svg\'dir. Bu dosyanın mime tipi: :mimetype.', 'import' => 'İçeri aktar', 'import_this_file' => 'Alanları eşleyin ve bu dosyayı işleyin', @@ -186,7 +186,7 @@ Context | Request Context 'licenses_available' => 'Kullanılabilir Lisanslar', 'licenses' => 'Lisanslar', 'list_all' => 'Tümünü listele', - 'loading' => 'Yükleniyor... lütfen bekleyin....', + 'loading' => 'Yükleniyor... lütfen bekleyin...', 'lock_passwords' => 'Bu alan değeri bir demo kurulumunda kaydedilmeyecektir.', 'feature_disabled' => 'Bu özellik demo yükleme için devre dışı bırakıldı.', 'location' => 'Konum', @@ -196,7 +196,7 @@ Context | Request Context 'logout' => 'Çıkış Yap', 'lookup_by_tag' => 'Varlık etiketine göre arama', 'maintenances' => 'Bakımlar', - 'manage_api_keys' => 'API Anahtarlarını Yönetin', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Üretici', 'manufacturers' => 'Üreticiler', 'markdown' => 'Bu alan Github tarafından desteklenir.', @@ -257,7 +257,7 @@ Context | Request Context 'select_all' => 'Tümünü Seç', 'search' => 'Ara', 'select_category' => 'Kategori Seç', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Bölüm Seç', 'select_depreciation' => 'Bir Değer Kaybı Türü Seç', 'select_location' => 'Konum Seç', @@ -277,11 +277,12 @@ Context | Request Context 'signed_off_by' => 'İmzalayan', 'skin' => 'Tema', 'webhook_msg_note' => 'Webhook üzerinden bir ileti gönderilecek', - 'webhook_test_msg' => 'Snipe-IT ile :app entegrasyonunuz çalışıyor!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO modu: Bu yükleme için bazı özellikleri devre dışı bırakılır.', 'site_name' => 'Site Adı', 'state' => 'İlçe', 'status_labels' => 'Durum Etiketleri', + 'status_label' => 'Status Label', 'status' => 'Durum', 'accept_eula' => 'Lisans Sözleşmesi', 'supplier' => 'Tedarikçi', @@ -342,16 +343,16 @@ Context | Request Context 'view_all' => 'tümünü görüntüle', 'hide_deleted' => 'Silinenleri Gizle', 'email' => 'E-Posta', - 'do_not_change' => 'Değiştirmeyin', - 'bug_report' => 'Hata Bildir', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Kullanım Kılavuzu', 'setup_step_1' => 'Adım 1', 'setup_step_2' => 'Adım 2', 'setup_step_3' => 'Adım 3', 'setup_step_4' => 'Adım 4', 'setup_config_check' => 'Yapılandırma Kontrolü', - 'setup_create_database' => 'Veritabanı Tabloları Oluştur', - 'setup_create_admin' => 'Yönetici Kullanıcısını Oluştur', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Tamamlandı!', 'bulk_edit_about_to' => 'Şunları düzenlemek üzeresiniz: ', 'checked_out' => 'Çıkış Yapıldı', diff --git a/resources/lang/tr-TR/localizations.php b/resources/lang/tr-TR/localizations.php index 3361e826b..d073c76d3 100644 --- a/resources/lang/tr-TR/localizations.php +++ b/resources/lang/tr-TR/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malayca', 'mi-NZ'=> 'Maori Dili', 'mn-MN'=> 'Moğolca', - 'no-NO'=> 'Norveç dili', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Farsça', 'pl-PL'=> 'Polonyaca', 'pt-PT'=> 'Portekizce', diff --git a/resources/lang/tr-TR/mail.php b/resources/lang/tr-TR/mail.php index e4f9a1bf1..805e24f6d 100644 --- a/resources/lang/tr-TR/mail.php +++ b/resources/lang/tr-TR/mail.php @@ -92,5 +92,5 @@ return [ 'welcome_to' => 'Hoş geldiniz :web!', 'your_assets' => 'Varlıkları Görüntüleme', 'your_credentials' => 'Snipe-IT Bilgileriniz', - 'mail_sent' => 'E-posta başarılı şekilde gönderildi.', + 'mail_sent' => 'E-posta başarılı şekilde gönderildi!', ]; diff --git a/resources/lang/tr-TR/validation.php b/resources/lang/tr-TR/validation.php index 7923f8b74..5facabb86 100644 --- a/resources/lang/tr-TR/validation.php +++ b/resources/lang/tr-TR/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ': Attribute alanı bulunmalıdır.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Geçerli şifre yanlış', 'dumbpwd' => 'Bu şifre çok yaygındır.', 'statuslabel_type' => 'Geçerli bir durum etiketi türü seçmelisiniz', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/uk-UA/account/general.php b/resources/lang/uk-UA/account/general.php index 16e27eff7..baad34c58 100644 --- a/resources/lang/uk-UA/account/general.php +++ b/resources/lang/uk-UA/account/general.php @@ -2,14 +2,17 @@ return array( 'personal_api_keys' => 'Особисті ключі API', - 'personal_access_token' => 'Personal Access Token', - 'personal_api_keys_success' => 'Personal API Key :key created sucessfully', - 'here_is_api_key' => 'Here is your new personal access token. This is the only time it will be shown so do not lose it! You may now use this token to make API requests.', - 'api_key_warning' => 'When generating an API token, be sure to copy it down immediately as they will not be visible to you again.', + 'personal_access_token' => 'Персональний токен доступу', + 'personal_api_keys_success' => 'Персональний ключ API :key створено успішно', + 'here_is_api_key' => 'Це ваш новий персональний токен доступу. Це буде показано лише один раз, так що не втратте! Ви можете тепер використовувати цей токен щоб зробити API запитів.', + 'api_key_warning' => 'Під час створення токену API, не забудьте надійно зберегти його, +тому що він не буде вам знову показаний.', 'api_base_url' => 'Ваша базова URL-адреса API:', 'api_base_url_endpoint' => '/<ресурс>', 'api_token_expiration_time' => 'API токени закінчуються:', 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', - 'no_tokens' => 'You have not created any personal access tokens.', + 'no_tokens' => 'Ви не створили жодних особистих токенів доступу.', + 'enable_sounds' => 'Увімкнути звукові ефекти', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/uk-UA/admin/locations/message.php b/resources/lang/uk-UA/admin/locations/message.php index 24ea7a9b7..f199be5b6 100644 --- a/resources/lang/uk-UA/admin/locations/message.php +++ b/resources/lang/uk-UA/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Розташування не існує.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Це розташування в даний час пов\'язано принаймні з одним активом і не може бути видалений. Будь ласка, оновіть ваші медіафайли, щоб більше не посилатися на це розташування і повторіть спробу. ', 'assoc_child_loc' => 'Це місцезнаходження наразі батько принаймні одного дочірнього місця і не може бути видалений. Будь ласка, оновіть ваше місцеположення, щоб більше не посилатися на це місце і повторіть спробу. ', 'assigned_assets' => 'Призначені активи', diff --git a/resources/lang/uk-UA/admin/settings/general.php b/resources/lang/uk-UA/admin/settings/general.php index 17ad04660..3f4e30951 100644 --- a/resources/lang/uk-UA/admin/settings/general.php +++ b/resources/lang/uk-UA/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => 'Інтеграція :app необов’язкова, однак Endpoint та канал потрібні, якщо ви бажаєте її використовувати. Щоб налаштувати інтеграцію :app, потрібно спочатку створити вхідний вебхук у своєму обліковому записі :app. Натисніть кнопку Тест Інтеграції :app, щоб підтвердити правильність налаштувань перед збереженням. ', 'webhook_integration_help_button' => 'Як тільки ви зберегли свою інформацію :app , з\'явиться тестова кнопка.', 'webhook_test_help' => 'Перевірте, чи налаштована інтеграція :app коректно. ВИ ПОВИННІ ЗБЕРЕЖЕТЕ ВАШЕ ОНОВАНО :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Версія Snipe-IT', 'support_footer' => 'Підтримка посилань в футері ', 'support_footer_help' => 'Вкажіть, хто бачить посилання на інформацію підтримки Snipe-IT та посібник користувача', diff --git a/resources/lang/uk-UA/admin/settings/message.php b/resources/lang/uk-UA/admin/settings/message.php index 2a69598e2..e8b232ab8 100644 --- a/resources/lang/uk-UA/admin/settings/message.php +++ b/resources/lang/uk-UA/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Так, відновити її. Я підтверджую, що це перезапише будь-які наявні дані в базі даних. Це також закриє всіх існуючих користувачів (включаючи вас).', 'restore_confirm' => 'Ви дійсно бажаєте відновити базу даних з :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Під час очищення сталася помилка. ', 'validation_failed' => 'Ваша чистка підтвердження неправильна. Будь ласка, введіть слово "DELETE" у полі підтвердження.', diff --git a/resources/lang/uk-UA/button.php b/resources/lang/uk-UA/button.php index 3d5e15a21..ddd95eedd 100644 --- a/resources/lang/uk-UA/button.php +++ b/resources/lang/uk-UA/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/uk-UA/general.php b/resources/lang/uk-UA/general.php index 7a61d20e4..d499d5dae 100644 --- a/resources/lang/uk-UA/general.php +++ b/resources/lang/uk-UA/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Витратні матеріали', 'country' => 'Країна', 'could_not_restore' => 'Помилка відновлення :item_type: :error', - 'not_deleted' => ':item_type не вилучено, тому його не можна відновити', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Створити новий', 'created' => 'Елемент створено', 'created_asset' => 'створений актив', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ця програма працює в робочому режимі з увімкненим відлагодженням. Це може призвести до розкриття конфіденційних даних, якщо ваша програма доступна зовнішньому світу. Вимкніть режим налагодження, установивши для значення APP_DEBUG у вашому файлі .env значення false.', 'delete' => 'Видалити', 'delete_confirm' => 'Ви впевнені, що бажаєте видалити :item?', - 'delete_confirm_no_undo' => 'Ви впевнені, що бажаєте видалити :item? Це незворотня дія.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Видалено', 'delete_seats' => 'Видалені місця', 'deletion_failed' => 'Помилка видалення', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Прізвище Першою початковою (smith_j@example.com)', 'firstinitial.lastname' => 'Перше початкове ім\'я (j.smith@example.com)', 'firstnamelastinitial' => 'Останнє ім\'я (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Ім\'я', 'first_name_format' => 'Ім\'я (jane@example.com)', 'files' => 'Файли', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Видалити зображення', 'include_deleted' => 'Включати видалені активи', 'image_upload' => 'Завантажити зображення', - 'filetypes_accepted_help' => 'Прийнятий тип файлу - :types. Максимальний розмір завантаження - :size.| Прийняті типи файлів :types. Максимальний розмір завантаження - :size.', - 'filetypes_size_help' => 'Максимальний розмір завантажуваного файлу - :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Цей файл зображення не був прочитаний. Допустимі типи файлів - jpg, webp, png, gif та svg. Mimetype цього файлу: :mimetype.', 'import' => 'Імпорт', 'import_this_file' => 'Поля карти і обробка цього файлу', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Можливі ліцензії', 'licenses' => 'Ліцензії', 'list_all' => 'Список всіх', - 'loading' => 'Завантаження... Будь ласка, зачекайте...', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'Це значення поля не буде збережено в демо версії.', 'feature_disabled' => 'Ця функція може бути відключена в демо версіїї.', 'location' => 'Місцезнаходження', @@ -193,7 +193,7 @@ return [ 'logout' => 'Вийти', 'lookup_by_tag' => 'Пошук за тегом актива', 'maintenances' => 'Обслуговування', - 'manage_api_keys' => 'Керувати API ключами', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Виробник', 'manufacturers' => 'Виробники', 'markdown' => 'Це поле дозволяє використовувати Github markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Виділити все', 'search' => 'Пошук', 'select_category' => 'Оберіть категорію', - 'select_datasource' => 'Вибір джерела даних', + 'select_datasource' => 'Select a data source', 'select_department' => 'Оберіть відділ', 'select_depreciation' => 'Оберіть тип амортизації', 'select_location' => 'Оберіть розташування', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Підписано за', 'skin' => 'Шкіра', 'webhook_msg_note' => 'Повідомлення буде надіслано через webhook', - 'webhook_test_msg' => 'О, хай! Здається ваша інтеграція з :app із Snipe-IT працює!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'РЕЖИМ ДЕМО: Деякі функції відключені.', 'site_name' => 'Назва сайту', 'state' => 'Статус', 'status_labels' => 'Статуси активів', + 'status_label' => 'Status Label', 'status' => 'Статус', 'accept_eula' => 'Угода про погодження', 'supplier' => 'Постачальник', @@ -339,16 +340,16 @@ return [ 'view_all' => 'переглянути все', 'hide_deleted' => 'Приховати видалені', 'email' => 'Email', - 'do_not_change' => 'Не змінювати', - 'bug_report' => 'Повідомити про помилку', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Керівництво користувача', 'setup_step_1' => 'Крок 1', 'setup_step_2' => 'Крок 2', 'setup_step_3' => 'Крок 3', 'setup_step_4' => 'Крок 4', 'setup_config_check' => 'Перевірка конфігурації', - 'setup_create_database' => 'Створити таблиці бази даних', - 'setup_create_admin' => 'Створити Адміністратора', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Завершено!', 'bulk_edit_about_to' => 'Ви збираєтеся редагувати наступне: ', 'checked_out' => 'Видано', diff --git a/resources/lang/uk-UA/localizations.php b/resources/lang/uk-UA/localizations.php index be71c22d9..737cb4a35 100644 --- a/resources/lang/uk-UA/localizations.php +++ b/resources/lang/uk-UA/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Малайська', 'mi-NZ'=> 'Маорійська', 'mn-MN'=> 'Монгольська', - 'no-NO'=> 'Норвезька', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Перська', 'pl-PL'=> 'Польська', 'pt-PT'=> 'Португальська', diff --git a/resources/lang/uk-UA/validation.php b/resources/lang/uk-UA/validation.php index 27c20c9a9..9d02811a4 100644 --- a/resources/lang/uk-UA/validation.php +++ b/resources/lang/uk-UA/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Поле :attribute повинне бути присутнім.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Поточний пароль неправильний', 'dumbpwd' => 'Цей пароль занадто вживаний.', 'statuslabel_type' => 'Ви повинні вибрати правильний тип статуса', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/ur-PK/account/general.php b/resources/lang/ur-PK/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/ur-PK/account/general.php +++ b/resources/lang/ur-PK/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/ur-PK/admin/locations/message.php b/resources/lang/ur-PK/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/ur-PK/admin/locations/message.php +++ b/resources/lang/ur-PK/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/ur-PK/admin/settings/general.php b/resources/lang/ur-PK/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/ur-PK/admin/settings/general.php +++ b/resources/lang/ur-PK/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/ur-PK/admin/settings/message.php b/resources/lang/ur-PK/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/ur-PK/admin/settings/message.php +++ b/resources/lang/ur-PK/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/ur-PK/button.php b/resources/lang/ur-PK/button.php index 51c54bb9b..8a838e8fa 100644 --- a/resources/lang/ur-PK/button.php +++ b/resources/lang/ur-PK/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/ur-PK/general.php b/resources/lang/ur-PK/general.php index b3a6b3432..444ed5408 100644 --- a/resources/lang/ur-PK/general.php +++ b/resources/lang/ur-PK/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/ur-PK/localizations.php b/resources/lang/ur-PK/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/ur-PK/localizations.php +++ b/resources/lang/ur-PK/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/ur-PK/validation.php b/resources/lang/ur-PK/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/ur-PK/validation.php +++ b/resources/lang/ur-PK/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/vi-VN/account/general.php b/resources/lang/vi-VN/account/general.php index ecabb19c7..e4e74bbbc 100644 --- a/resources/lang/vi-VN/account/general.php +++ b/resources/lang/vi-VN/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Đã cập nhật tài khoản thành công', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/vi-VN/admin/locations/message.php b/resources/lang/vi-VN/admin/locations/message.php index 7b83762d9..4e54728f3 100644 --- a/resources/lang/vi-VN/admin/locations/message.php +++ b/resources/lang/vi-VN/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Địa phương không tồn tại.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Địa phương này hiện tại đã được liên kết với ít nhất một tài sản và không thể xóa. Xin vui lòng cập nhật tài sản của bạn để không còn liên kết với địa phương này nữa và thử lại. ', 'assoc_child_loc' => 'Địa phương này hiện tại là cấp parent của ít nhật một địa phương con và không thể xóa. Xin vui lòng cập nhật địa phương của bạn để không liên kết đến địa phương này và thử lại. ', 'assigned_assets' => 'Tài sản được giao', diff --git a/resources/lang/vi-VN/admin/settings/general.php b/resources/lang/vi-VN/admin/settings/general.php index 69e428ee2..0d7c0b1c5 100644 --- a/resources/lang/vi-VN/admin/settings/general.php +++ b/resources/lang/vi-VN/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Phiên bản Snipe-IT', 'support_footer' => 'Hỗ trợ liên kết ở chân trang ', 'support_footer_help' => 'Chỉ định ai nhìn thấy các liên kết đến Thông tin người dùng và Hướng dẫn sử dụng Snipe-IT', diff --git a/resources/lang/vi-VN/admin/settings/message.php b/resources/lang/vi-VN/admin/settings/message.php index 4bfae166f..4b30cbb5f 100644 --- a/resources/lang/vi-VN/admin/settings/message.php +++ b/resources/lang/vi-VN/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Đã xảy ra lỗi trong khi xóa.', 'validation_failed' => 'Xác nhận thanh lọc của bạn không chính xác. Vui lòng nhập từ "DELETE" vào hộp xác nhận.', diff --git a/resources/lang/vi-VN/button.php b/resources/lang/vi-VN/button.php index aa01f1e3b..d1c6f1034 100644 --- a/resources/lang/vi-VN/button.php +++ b/resources/lang/vi-VN/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/vi-VN/general.php b/resources/lang/vi-VN/general.php index b1945cf42..133a76ca3 100644 --- a/resources/lang/vi-VN/general.php +++ b/resources/lang/vi-VN/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Vật tư phụ', 'country' => 'Nước', 'could_not_restore' => 'Khôi phục lỗi :item_type: :Lỗi', - 'not_deleted' => 'Các :item_type không bị xóa nên không thể khôi phục được', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Tạo mới', 'created' => 'Mục đã tạo', 'created_asset' => 'tài sản đã tạo', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Ứng dụng này đang chạy trong chế độ sản xuất với bật gỡ lỗi. Điều này có thể phơi bày dữ liệu nhạy cảm nếu ứng dụng của bạn có thể tiếp cận được với thế giới bên ngoài. Tắt chế độ gỡ lỗi bằng cách đặt giá trị APP_DEBUG trong tệp .env của bạn thành false.', 'delete' => 'Xóa', 'delete_confirm' => 'Bạn có chắc chắn muốn xoá trường này không?', - 'delete_confirm_no_undo' => 'Bạn có chắc chắn muốn xoá :item? Xoá xong là không thể phục hồi nhé.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Đã xóa', 'delete_seats' => 'Ghế đã Xóa', 'deletion_failed' => 'Xoá không được', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Họ trước Tên sau (smith_j@example.com)', 'firstinitial.lastname' => 'Tên trước Họ sau (j.smith@example.com)', 'firstnamelastinitial' => 'Tên Họ Viết tắt (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Họ và tên đệm', 'first_name_format' => 'Tên (jane@example.com)', 'files' => 'Các tập tin', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Xóa hình', 'include_deleted' => 'Bao gồm các tài sản đã xóa', 'image_upload' => 'Tải hình', - 'filetypes_accepted_help' => 'Các loại tệp được chấp nhận là :types. Kích thước tải lên tối đa được cho phép là :size.|Các loại tệp được chấp nhận là :types. Kích thước tải lên tối đa được cho phép là :size.', - 'filetypes_size_help' => 'Dung lượng tải lên tối đa cho phép.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'Tập tin hình ảnh không thể đọc được. Chỉ chấp nhận các kiểu tập tin là jpg, webp, png, gif, và svg.', 'import' => 'Nhập', 'import_this_file' => 'Các trường bản đồ và quá trình xử lý tệp này', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Giấy phép có sẵn', 'licenses' => 'Bản quyền', 'list_all' => 'Tất cả', - 'loading' => 'Đang tải..., vui lòng chờ....', + 'loading' => 'Đang tải..., vui lòng chờ...', 'lock_passwords' => 'Giá trị trường này sẽ không được lưu trong cài đặt demo.', 'feature_disabled' => 'Tính năng này đã bị vô hiệu hóa để cài đặt bản demo.', 'location' => 'Địa phương', @@ -193,7 +193,7 @@ return [ 'logout' => 'Thoát', 'lookup_by_tag' => 'Tra cứu theo Thẻ nội dung', 'maintenances' => 'Bảo trì', - 'manage_api_keys' => 'Quản lý khóa API', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Nhà sản xuất', 'manufacturers' => 'Nhà sản xuất', 'markdown' => 'Trường này cho phép đánh dấu Github mùi vị.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Chọn tất cả', 'search' => 'Tìm kiếm', 'select_category' => 'Chọn một danh mục', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Chọn một Phòng', 'select_depreciation' => 'Lựa chọn một Loại Khấu hao', 'select_location' => 'Lựa chọn một Địa phương', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Đã ký tắt bởi', 'skin' => 'Giao diện', 'webhook_msg_note' => 'Một thông báo sẽ được gửi qua webhook', - 'webhook_test_msg' => 'Ôi trời! Có vẻ như việc tích hợp :app với Snipe-IT của bạn đang hoạt động!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Một số tính năng đã bị vô hiệu cho cài đặt này.', 'site_name' => 'Tên trang web', 'state' => 'Tỉnh/Thành phố', 'status_labels' => 'Tình trạng nhãn', + 'status_label' => 'Status Label', 'status' => 'Tình trạng', 'accept_eula' => 'Chấp nhận quy định', 'supplier' => 'Nhà cung cấp', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Ẩn đã xóa', 'email' => 'Email', - 'do_not_change' => 'Không được thay đổi', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'Người dùng mặc định', 'setup_step_1' => 'Bước 1', 'setup_step_2' => 'Bước 2', 'setup_step_3' => 'Bước 3', 'setup_step_4' => 'Bước 4', 'setup_config_check' => 'Kiểm tra cấu hình', - 'setup_create_database' => 'Tạo bảng cơ sở dữ liệu', - 'setup_create_admin' => 'Tạo tài khoản quản trị', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Hoàn tất!', 'bulk_edit_about_to' => 'Bạn đang chuẩn bị chỉnh sửa nội dung sau: ', 'checked_out' => 'Bàn giao', diff --git a/resources/lang/vi-VN/localizations.php b/resources/lang/vi-VN/localizations.php index e715ade55..026b67f2e 100644 --- a/resources/lang/vi-VN/localizations.php +++ b/resources/lang/vi-VN/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/vi-VN/validation.php b/resources/lang/vi-VN/validation.php index ebfc380c0..402458302 100644 --- a/resources/lang/vi-VN/validation.php +++ b/resources/lang/vi-VN/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'Trường thuộc tính: phải có mặt.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Mật khẩu hiện tại của bạn không chính xác', 'dumbpwd' => 'Mật khẩu đó quá phổ biến.', 'statuslabel_type' => 'Bạn phải chọn một loại nhãn tình trạng hợp lệ', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/zh-CN/account/general.php b/resources/lang/zh-CN/account/general.php index dadfe6e03..c0573ba59 100644 --- a/resources/lang/zh-CN/account/general.php +++ b/resources/lang/zh-CN/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => '请检查 API 参考 以找到特定的 API 端点和额外的 API 文档。', 'profile_updated' => '帐户已成功更新', 'no_tokens' => '您还没有创建任何个人访问令牌。', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/zh-CN/admin/locations/message.php b/resources/lang/zh-CN/admin/locations/message.php index cec98cdf3..4ac1e6f10 100644 --- a/resources/lang/zh-CN/admin/locations/message.php +++ b/resources/lang/zh-CN/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => '位置不存在', - 'assoc_users' => '此位置目前不可删除,因为它是至少一个资产或用户的记录所在位置, 资产已分配给它,或者是另一个地点的上级位置。 请更新您的型号以不再关联此公司,然后重试。 ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => '删除失败,该位置已与其它资产关联。请先更新资产以取消关联,然后重试。 ', 'assoc_child_loc' => '删除失败,该位置是一个或多个子位置的上层节点。请更新地理位置信息以取消关联,然后重试。 ', 'assigned_assets' => '已分配的资产', diff --git a/resources/lang/zh-CN/admin/settings/general.php b/resources/lang/zh-CN/admin/settings/general.php index 9da1bd96d..0a4b42923 100644 --- a/resources/lang/zh-CN/admin/settings/general.php +++ b/resources/lang/zh-CN/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app 集成是为可选项,但如果您想要使用它,则需要endpoint和channel。 要配置 :app 集成,您必须先在您的 :app 账户上创建传入的 webhook 。 在保存之前请点击 测试 :app 集成 按钮确认您的设置是否正确。 ', 'webhook_integration_help_button' => '一旦您保存了您的 :app 信息,测试按钮将会出现。', 'webhook_test_help' => '测试您的 :app 集成配置是否正确。您必须保存您更新的 :app 设置', + 'shortcuts_enabled' => '启用快捷键', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => '支持页脚链接 ', 'support_footer_help' => '指定谁可以看到指向Snipe-IT支持信息和用户手册的链接', diff --git a/resources/lang/zh-CN/admin/settings/message.php b/resources/lang/zh-CN/admin/settings/message.php index 35d75c68d..d64c14226 100644 --- a/resources/lang/zh-CN/admin/settings/message.php +++ b/resources/lang/zh-CN/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => '是的,还原它。我确认这将覆盖当前数据库中的任何现有数据。 这也将注销您现有的所有用户 (包括您)。', 'restore_confirm' => '您确定要从 :filename还原您的数据库吗?' ], + 'restore' => [ + 'success' => '您的系统备份已恢复。请重新登录。' + ], 'purge' => [ 'error' => '清除过程中出现了错误。 ', 'validation_failed' => '你的清除确认不正确,请在输入框中输入“DELETE”。', diff --git a/resources/lang/zh-CN/button.php b/resources/lang/zh-CN/button.php index a44f2ad04..0a7598d11 100644 --- a/resources/lang/zh-CN/button.php +++ b/resources/lang/zh-CN/button.php @@ -26,7 +26,7 @@ return [ 'clone' => '克隆 :item_type', 'edit' => '编辑 :item_type', 'delete' => '删除 :item_type', - 'restore' => '删除 :item_type', + 'restore' => '恢复 :item_type', 'create' => '创建新的 :item_type', 'checkout' => '借出 :item_type', 'checkin' => '归还 :item_type', diff --git a/resources/lang/zh-CN/general.php b/resources/lang/zh-CN/general.php index 38ea6f2ba..f2e7def35 100644 --- a/resources/lang/zh-CN/general.php +++ b/resources/lang/zh-CN/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => '消耗品', 'country' => '国家', 'could_not_restore' => '恢复时出错 :item_type: :error', - 'not_deleted' => ':item_type 未被删除,因此无法恢复', + 'not_deleted' => ':item_type 未删除,所以无法恢复', 'create' => '新增', 'created' => '项目已创建', 'created_asset' => '新建资产', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => '此应用程序运行在生产模式下的调试状态。如果您的应用程序可以被外部访问,这会使敏感数据暴露。通过将 .env 文件中的APP_DEBUG 值设置为 false来 禁用调试模式。', 'delete' => '刪除', 'delete_confirm' => '是否确定删除此项', - 'delete_confirm_no_undo' => '你确定要删除这条数据吗?这个数据将会无法恢复。', + 'delete_confirm_no_undo' => '您确定要删除 :item?此操作无法撤消。', 'deleted' => '已删除', 'delete_seats' => '已移除空位', 'deletion_failed' => '删除失败', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => '姓 缩写名, 例如 (smith_j@example.com)', 'firstinitial.lastname' => '缩写名 姓,例如(jsmith@example.com)', 'firstnamelastinitial' => '名 姓,例如 (jane.smith@example.com)', - 'lastnamefirstname' => '姓 名,例如(smith.jane@example.com)', + 'lastnamefirstname' => '姓氏.名字 (smith.jane@example.com)', 'first_name' => '名字', 'first_name_format' => '名,例如 (jane@example.com)', 'files' => '文件', @@ -156,9 +156,9 @@ return [ 'image_delete' => '删除图片', 'include_deleted' => '包括已删除的资产', 'image_upload' => '上传图片', - 'filetypes_accepted_help' => '可接受的文件类型是 :types. 最大允许上传大小为 :size.|可接受的文件类型是 :types. 最大允许上传大小为 :size.', - 'filetypes_size_help' => '允许最大上传文件的大小为 :size.', - 'image_filetypes_help' => '可接受的文件类型是 jpg、webp、png、gif、svg和avif。最大允许上传大小为 :size.', + 'filetypes_accepted_help' => '可接受的文件类型是 :type 。允许的最大大小是 :size.|可接受的文件类型是 :type 。允许最大上传大小是 :size。', + 'filetypes_size_help' => '允许最大上传大小为 :size', + 'image_filetypes_help' => '可接受的文件类型是jpg、webp、png、gif、svg和avif。允许最大上传大小为 :size。', 'unaccepted_image_type' => '此图像文件不可读。可接受的文件类型为jpg、webp、png、gif和svg。此文件的 mimetype 类型为::mimetype。', 'import' => '导入', 'import_this_file' => '映射字段并处理此文件', @@ -279,6 +279,7 @@ return [ 'site_name' => '站点名称', 'state' => '省份', 'status_labels' => '状态标签', + 'status_label' => 'Status Label', 'status' => '状态', 'accept_eula' => '接受协议', 'supplier' => '供应商', @@ -339,7 +340,7 @@ return [ 'view_all' => '查看全部', 'hide_deleted' => '隐藏已删除', 'email' => '邮箱', - 'do_not_change' => '不要更改', + 'do_not_change' => '不更改', 'bug_report' => '报告错误', 'user_manual' => '用户手册', 'setup_step_1' => '第 1 步', diff --git a/resources/lang/zh-CN/localizations.php b/resources/lang/zh-CN/localizations.php index 621912397..226e7fcb0 100644 --- a/resources/lang/zh-CN/localizations.php +++ b/resources/lang/zh-CN/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> '马来文', 'mi-NZ'=> 'Maori', 'mn-MN'=> '蒙古语', - 'no-NO'=> '挪威语', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> '挪威语 (博克马尔语)', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> '波斯文', 'pl-PL'=> '波兰语', 'pt-PT'=> '葡萄牙文', diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php index bf1601eae..75c71fd5e 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => ':attribute 字段必须至少包含一个符号。', 'uncompromised' => '给定的 :attribute 字段出现在数据泄漏中。请选择一个不同的 :attribute 。', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':属性字段必须存在。', 'present_if' => '当 :other 为 :value 时,:attribute 字段必须存在。', 'present_unless' => ':attribute 字段必须存在,除非 :other 是 :value 。', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => '您当前的密码不正确', 'dumbpwd' => '那个密码太常见了。', 'statuslabel_type' => '您必须选择有效的状态标签类型', + 'custom_field_not_found' => '此字段似乎不存在,请重新检查您的自定义字段名称。', + 'custom_field_not_found_on_model' => '此字段似乎存在,但在此资产型号的字段集上不可用。', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/zh-HK/account/general.php b/resources/lang/zh-HK/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/zh-HK/account/general.php +++ b/resources/lang/zh-HK/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/zh-HK/admin/locations/message.php b/resources/lang/zh-HK/admin/locations/message.php index 8121b8068..6226c71ab 100644 --- a/resources/lang/zh-HK/admin/locations/message.php +++ b/resources/lang/zh-HK/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Location does not exist.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'This location is currently associated with at least one asset and cannot be deleted. Please update your assets to no longer reference this location and try again. ', 'assoc_child_loc' => 'This location is currently the parent of at least one child location and cannot be deleted. Please update your locations to no longer reference this location and try again. ', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/zh-HK/admin/settings/general.php b/resources/lang/zh-HK/admin/settings/general.php index 9ba69ef22..31165cf3f 100644 --- a/resources/lang/zh-HK/admin/settings/general.php +++ b/resources/lang/zh-HK/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT version', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/zh-HK/admin/settings/message.php b/resources/lang/zh-HK/admin/settings/message.php index c9b0f3421..24e2d292c 100644 --- a/resources/lang/zh-HK/admin/settings/message.php +++ b/resources/lang/zh-HK/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'An error has occurred while purging. ', 'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.', diff --git a/resources/lang/zh-HK/button.php b/resources/lang/zh-HK/button.php index fead420b2..8172eed8d 100644 --- a/resources/lang/zh-HK/button.php +++ b/resources/lang/zh-HK/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/zh-HK/general.php b/resources/lang/zh-HK/general.php index 3a63ca97e..d5403bd95 100644 --- a/resources/lang/zh-HK/general.php +++ b/resources/lang/zh-HK/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Consumables', 'country' => 'Country', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Create New', 'created' => 'Item Created', 'created_asset' => 'created asset', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the APP_DEBUG value in your .env file to false.', 'delete' => 'Delete', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Deleted', 'delete_seats' => 'Deleted Seats', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'First Name', 'first_name_format' => 'First Name (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Delete Image', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Upload Image', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Import', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'This feature has been disabled for the demo installation.', 'location' => 'Location', @@ -193,7 +193,7 @@ return [ 'logout' => 'Logout', 'lookup_by_tag' => 'Lookup by Asset Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Manufacturer', 'manufacturers' => 'Manufacturers', 'markdown' => 'This field allows Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'site_name' => 'Site Name', 'state' => 'State', 'status_labels' => 'Status Labels', + 'status_label' => 'Status Label', 'status' => 'Status', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Supplier', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Checked Out', diff --git a/resources/lang/zh-HK/localizations.php b/resources/lang/zh-HK/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/zh-HK/localizations.php +++ b/resources/lang/zh-HK/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/zh-HK/validation.php b/resources/lang/zh-HK/validation.php index b33548e2f..634170791 100644 --- a/resources/lang/zh-HK/validation.php +++ b/resources/lang/zh-HK/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'The :attribute field must be present.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/zh-TW/account/general.php b/resources/lang/zh-TW/account/general.php index c87a92408..5f6311a0c 100644 --- a/resources/lang/zh-TW/account/general.php +++ b/resources/lang/zh-TW/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/zh-TW/admin/locations/message.php b/resources/lang/zh-TW/admin/locations/message.php index ab637febb..3e5c4da17 100644 --- a/resources/lang/zh-TW/admin/locations/message.php +++ b/resources/lang/zh-TW/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => '地點不存在.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => '至少還有一個資產與此位置關聯,目前不能被删除,請檢查後重試。 ', 'assoc_child_loc' => '至少還有一個子項目與此位置關聯,目前不能被删除,請檢查後重試。 ', 'assigned_assets' => '已分配資產', diff --git a/resources/lang/zh-TW/admin/settings/general.php b/resources/lang/zh-TW/admin/settings/general.php index db6ff97f2..7af807d32 100644 --- a/resources/lang/zh-TW/admin/settings/general.php +++ b/resources/lang/zh-TW/admin/settings/general.php @@ -219,6 +219,8 @@ return [ 'webhook_integration_help' => ':app 整合是選擇性的,但如果您希望使用它,則需要端點和頻道。要設定 :app 整合,您必須先在您的 :app 帳戶上建立傳入的 webhook。在儲存之前,點選 測試 :app 整合 按鈕確認您的設定是否正確。', 'webhook_integration_help_button' => '一旦您儲存了您的 :app 資訊,將會出現一個測試按鈕。', 'webhook_test_help' => '測試您的 :app 整合是否設定正確。您必須先儲存更新的 :app 設定。', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Snipe-IT 版本', 'support_footer' => '支援頁尾連結', 'support_footer_help' => '指定誰可以看到指向Snipe-IT支持信息和用戶手冊的鏈接', diff --git a/resources/lang/zh-TW/admin/settings/message.php b/resources/lang/zh-TW/admin/settings/message.php index 4722b6a4b..6ed32111e 100644 --- a/resources/lang/zh-TW/admin/settings/message.php +++ b/resources/lang/zh-TW/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => '是的,還原它。我了解這將覆蓋資料庫中目前的任何現有數據。這也會登出所有目前使用者(包括您)。', 'restore_confirm' => '請您確認是否要從 :filename 還原資料庫?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => '清除過程中發生錯誤。', 'validation_failed' => '你的清除確認不正確,請在文字輸入欄位輸入"DELETE"。', diff --git a/resources/lang/zh-TW/button.php b/resources/lang/zh-TW/button.php index 20c6b43ab..826554525 100644 --- a/resources/lang/zh-TW/button.php +++ b/resources/lang/zh-TW/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/zh-TW/general.php b/resources/lang/zh-TW/general.php index e8936ec4d..3c89e4c47 100644 --- a/resources/lang/zh-TW/general.php +++ b/resources/lang/zh-TW/general.php @@ -12,7 +12,7 @@ return [ 'address' => '地址', 'admin' => '管理員', 'admin_tooltip' => 'This user has admin privileges', - 'superuser' => 'Superuser', + 'superuser' => '超級使用者', 'superuser_tooltip' => 'This user has superuser privileges', 'administrator' => '管理員', 'add_seats' => '新增授權', @@ -77,7 +77,7 @@ return [ 'consumables' => '耗材', 'country' => '國家', 'could_not_restore' => '還原錯誤 :item_type: :error', - 'not_deleted' => '此 :item_type 未被刪除,因此無法還原。', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => '新增', 'created' => '項目已新增', 'created_asset' => '新增資產', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => '此應用程式已開啟除錯模式, 如果開放外部存取可能造成敏感資料外洩。您可透過修改.env檔案中的參數APP_DEBUG,將值改為false關閉除錯模式。', 'delete' => '刪除', 'delete_confirm' => '您確定要刪除 :item 嗎?', - 'delete_confirm_no_undo' => '您確定要刪除 :item 嗎?此操作無法復原。', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => '刪除', 'delete_seats' => '刪除授權', 'deletion_failed' => '刪除失敗', @@ -126,15 +126,15 @@ return [ 'firstname_lastname_underscore_format' => '名字姓氏,例如(jane_smith@example.com)', 'lastnamefirstinitial_format' => '姓氏首字母(smithj@example.com)', 'firstintial_dot_lastname_format' => '姓氏與名首子母 (j.smith@example.com)', - 'firstname_lastname_display' => 'First Name Last Name (Jane Smith)', - 'lastname_firstname_display' => 'Last Name First Name (Smith Jane)', + 'firstname_lastname_display' => '名稱及姓氏(小明 王)', + 'lastname_firstname_display' => '姓氏及名稱(王 小明)', 'name_display_format' => '名稱顯示格式', 'first' => '首頁', 'firstnamelastname' => '全名 (janesmith@example.com)', 'lastname_firstinitial' => '姓氏與名首字母 (smith_j@example.com)', 'firstinitial.lastname' => '姓氏與名首子母 (j.smith@example.com)', 'firstnamelastinitial' => '名字與姓首字母 (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => '名字', 'first_name_format' => '名,例如 (jane@example.com)', 'files' => '檔案', @@ -156,9 +156,9 @@ return [ 'image_delete' => '刪除圖片', 'include_deleted' => '包含已刪除的資產', 'image_upload' => '上傳圖片', - 'filetypes_accepted_help' => '接受的檔案類型為 :types。允許的最大上傳大小為 :size。', - 'filetypes_size_help' => '上傳檔案大小上限為 :size', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => '此影像無法被讀取。可接受的檔案格式為 jpg, webp, png, gif 以及 svg。此影像的 mimetype 為 :mimetype。', 'import' => '匯入', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => '授權', 'list_all' => '列出全部', - 'loading' => '正在載入,請稍候....', + 'loading' => '正在載入,請稍候...', 'lock_passwords' => '此欄位值不會儲存在 Demo 安裝.', 'feature_disabled' => '演示模式下禁用此功能', 'location' => '位置', @@ -193,7 +193,7 @@ return [ 'logout' => '登出', 'lookup_by_tag' => '尋找資產標籤', 'maintenances' => '維護', - 'manage_api_keys' => '管理 API 金鑰', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => '製造商', 'manufacturers' => '製造商', 'markdown' => '此欄位可以使用 Github flavored markdown.', @@ -254,7 +254,7 @@ return [ 'select_all' => '全部選取', 'search' => '搜尋', 'select_category' => '選擇一個類別', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => '選擇部門', 'select_depreciation' => '選擇折舊類型', 'select_location' => '選擇位置', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => '簽署者', 'skin' => '主題', 'webhook_msg_note' => '將透過 webhook 傳送通知', - 'webhook_test_msg' => '嗨!看起來您的 Snipe-IT 與 :app 的整合運作正常!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => '演示模式︰ 此安裝禁用某些功能。', 'site_name' => '網站名稱', 'state' => '省份', 'status_labels' => '狀態標籤', + 'status_label' => 'Status Label', 'status' => '狀態', 'accept_eula' => '接受 EULA', 'supplier' => '供應商', @@ -339,16 +340,16 @@ return [ 'view_all' => '檢視全部', 'hide_deleted' => '隱藏已刪除', 'email' => '電子郵件', - 'do_not_change' => '請勿更動', - 'bug_report' => '回報問題', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => '使用者手冊', 'setup_step_1' => '步驟 1', 'setup_step_2' => '步驟 2', 'setup_step_3' => '步驟 3', 'setup_step_4' => '步驟 4', 'setup_config_check' => '檢查設定', - 'setup_create_database' => '建立資料庫欄位', - 'setup_create_admin' => '建立管理員', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => '完成!', 'bulk_edit_about_to' => '您即將編輯以下項目:', 'checked_out' => '已領用', @@ -522,7 +523,7 @@ return [ 'action_permission_generic' => '您沒有權限做 :action this :item_type', 'edit' => '編輯', 'action_source' => '行動來源', - 'or' => 'or', + 'or' => '或', 'url' => '網址', 'edit_fieldset' => 'Edit fieldset fields and options', 'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.', diff --git a/resources/lang/zh-TW/localizations.php b/resources/lang/zh-TW/localizations.php index ac89b3074..d5d2a8f7b 100644 --- a/resources/lang/zh-TW/localizations.php +++ b/resources/lang/zh-TW/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> '馬來語', 'mi-NZ'=> '毛利語', 'mn-MN'=> '蒙古語', - 'no-NO'=> '挪威語', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> '波斯語', 'pl-PL'=> '波蘭語', 'pt-PT'=> '葡萄牙語', diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php index 4711c8e0b..f2aacb2a2 100644 --- a/resources/lang/zh-TW/validation.php +++ b/resources/lang/zh-TW/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => ':屬性字段必須存在。', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => '當前密碼不正確!', 'dumbpwd' => '該密碼太常見。', 'statuslabel_type' => '您必須選擇一個有效的狀態標籤', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP diff --git a/resources/lang/zu-ZA/account/general.php b/resources/lang/zu-ZA/account/general.php index d99e36df8..7f9e2f848 100644 --- a/resources/lang/zu-ZA/account/general.php +++ b/resources/lang/zu-ZA/account/general.php @@ -12,4 +12,6 @@ return array( 'api_reference' => 'Please check the API reference to find specific API endpoints and additional API documentation.', 'profile_updated' => 'Account successfully updated', 'no_tokens' => 'You have not created any personal access tokens.', + 'enable_sounds' => 'Enable sound effects', + 'enable_confetti' => 'Enable confetti effects', ); diff --git a/resources/lang/zu-ZA/admin/locations/message.php b/resources/lang/zu-ZA/admin/locations/message.php index 7db24f666..290f930f4 100644 --- a/resources/lang/zu-ZA/admin/locations/message.php +++ b/resources/lang/zu-ZA/admin/locations/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Indawo ayikho.', - 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this company and try again. ', + 'assoc_users' => 'This location is not currently deletable because it is the location of record for at least one asset or user, has assets assigned to it, or is the parent location of another location. Please update your models to no longer reference this location and try again. ', 'assoc_assets' => 'Le ndawo okwamanje ihlotshaniswa okungenani nefa elilodwa futhi ayikwazi ukususwa. Sicela ubuyekeze izimpahla zakho ukuze ungasaphinde ubhekise le ndawo futhi uzame futhi.', 'assoc_child_loc' => 'Le ndawo okwamanje ungumzali okungenani indawo eyodwa yengane futhi ayikwazi ukususwa. Sicela ubuyekeze izindawo zakho ukuze ungasaphinde ubhekisele kule ndawo bese uyazama futhi.', 'assigned_assets' => 'Assigned Assets', diff --git a/resources/lang/zu-ZA/admin/settings/general.php b/resources/lang/zu-ZA/admin/settings/general.php index 6cc497fe9..3d9f7c8f5 100644 --- a/resources/lang/zu-ZA/admin/settings/general.php +++ b/resources/lang/zu-ZA/admin/settings/general.php @@ -218,6 +218,8 @@ return [ 'webhook_integration_help' => ':app integration is optional, however the endpoint and channel are required if you wish to use it. To configure :app integration, you must first create an incoming webhook on your :app account. Click on the Test :app Integration button to confirm your settings are correct before saving. ', 'webhook_integration_help_button' => 'Once you have saved your :app information, a test button will appear.', 'webhook_test_help' => 'Test whether your :app integration is configured correctly. YOU MUST SAVE YOUR UPDATED :app SETTINGS FIRST.', + 'shortcuts_enabled' => 'Enable Shortcuts', + 'shortcuts_help_text' => 'Windows: Alt + Access key, Mac: Control + Option + Access key', 'snipe_version' => 'Inguqulo ye-Snipe-IT', 'support_footer' => 'Support Footer Links ', 'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual', diff --git a/resources/lang/zu-ZA/admin/settings/message.php b/resources/lang/zu-ZA/admin/settings/message.php index 919ec8237..8b5d197f3 100644 --- a/resources/lang/zu-ZA/admin/settings/message.php +++ b/resources/lang/zu-ZA/admin/settings/message.php @@ -14,6 +14,9 @@ return [ 'restore_warning' => 'Yes, restore it. I acknowledge that this will overwrite any existing data currently in the database. This will also log out all of your existing users (including you).', 'restore_confirm' => 'Are you sure you wish to restore your database from :filename?' ], + 'restore' => [ + 'success' => 'Your system backup has been restored. Please login again.' + ], 'purge' => [ 'error' => 'Kuvele iphutha ngenkathi kuhlanzwa.', 'validation_failed' => 'Isiqinisekiso sakho sokuhlanza asilungile. Sicela uthayiphe igama elithi "SUSELA" ebhokisini lokuqinisekisa.', diff --git a/resources/lang/zu-ZA/button.php b/resources/lang/zu-ZA/button.php index d57de8065..641db85fb 100644 --- a/resources/lang/zu-ZA/button.php +++ b/resources/lang/zu-ZA/button.php @@ -26,7 +26,7 @@ return [ 'clone' => 'Clone :item_type', 'edit' => 'Edit :item_type', 'delete' => 'Delete :item_type', - 'restore' => 'Delete :item_type', + 'restore' => 'Restore :item_type', 'create' => 'Create New :item_type', 'checkout' => 'Checkout :item_type', 'checkin' => 'Checkin :item_type', diff --git a/resources/lang/zu-ZA/general.php b/resources/lang/zu-ZA/general.php index abafc9f1b..1d6f4712d 100644 --- a/resources/lang/zu-ZA/general.php +++ b/resources/lang/zu-ZA/general.php @@ -77,7 +77,7 @@ return [ 'consumables' => 'Amakhomikhali', 'country' => 'Izwe', 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'not_deleted' => 'The :item_type is not deleted, so it cannot be restored', 'create' => 'Dala Okusha', 'created' => 'Into edalwe', 'created_asset' => 'ifa elidalwe', @@ -98,7 +98,7 @@ return [ 'debug_warning_text' => 'Lolu hlelo lokusebenza lusemodi yokukhiqiza ngokususa iphutha kunikwe amandla. Lokhu kungabonisa idatha ebucayi uma isicelo sakho sifinyeleleka ezweni langaphandle. Khubaza imodi yokulungisa iphutha ngokubeka inani le-APP_DEBUG kufayela lakho le-.env kuya ku-false.', 'delete' => 'Susa', 'delete_confirm' => 'Are you sure you wish to delete :item?', - 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.', + 'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This cannot be undone.', 'deleted' => 'Isusiwe', 'delete_seats' => 'Izihlalo ezifakiwe', 'deletion_failed' => 'Deletion failed', @@ -134,7 +134,7 @@ return [ 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name First Name (smith.jane@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', 'first_name' => 'Igama', 'first_name_format' => 'Igama Lokuqala (jane@example.com)', 'files' => 'Files', @@ -156,9 +156,9 @@ return [ 'image_delete' => 'Susa isithombe', 'include_deleted' => 'Include Deleted Assets', 'image_upload' => 'Layisha isithombe', - 'filetypes_accepted_help' => 'Accepted filetype is :types. Max upload size allowed is :size.|Accepted filetypes are :types. Max upload size allowed is :size.', - 'filetypes_size_help' => 'Max upload size allowed is :size.', - 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. Max upload size allowed is :size.', + 'filetypes_accepted_help' => 'Accepted filetype is :types. The maximum size allowed is :size.|Accepted filetypes are :types. The maximum upload size allowed is :size.', + 'filetypes_size_help' => 'The maximum upload size allowed is :size.', + 'image_filetypes_help' => 'Accepted filetypes are jpg, webp, png, gif, svg, and avif. The maximum upload size allowed is :size.', 'unaccepted_image_type' => 'This image file was not readable. Accepted filetypes are jpg, webp, png, gif, and svg. The mimetype of this file is: :mimetype.', 'import' => 'Ngenisa', 'import_this_file' => 'Map fields and process this file', @@ -183,7 +183,7 @@ return [ 'licenses_available' => 'Licenses available', 'licenses' => 'Amalayisensi', 'list_all' => 'Bhala konke', - 'loading' => 'Loading... please wait....', + 'loading' => 'Loading... please wait...', 'lock_passwords' => 'This field value will not be saved in a demo installation.', 'feature_disabled' => 'Lesi sici sikhutshaziwe ukufakwa kwedemo.', 'location' => 'Indawo', @@ -193,7 +193,7 @@ return [ 'logout' => 'Phuma', 'lookup_by_tag' => 'Ukubheka nge-Tag Tag', 'maintenances' => 'Maintenances', - 'manage_api_keys' => 'Manage API Keys', + 'manage_api_keys' => 'Manage API keys', 'manufacturer' => 'Umkhiqizi', 'manufacturers' => 'Abakhiqizi', 'markdown' => 'Le nsimu ivumela i-I-markdown ekhanyisiwe.', @@ -254,7 +254,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Sesha', 'select_category' => 'Khetha Isigaba', - 'select_datasource' => 'Select a Datasource', + 'select_datasource' => 'Select a data source', 'select_department' => 'Khetha uMnyango', 'select_depreciation' => 'Khetha uhlobo lokuncipha', 'select_location' => 'Khetha indawo', @@ -274,11 +274,12 @@ return [ 'signed_off_by' => 'Signed Off By', 'skin' => 'Skin', 'webhook_msg_note' => 'A notification will be sent via webhook', - 'webhook_test_msg' => 'Oh hai! Looks like your :app integration with Snipe-IT is working!', + 'webhook_test_msg' => 'Oh hai! It looks like your :app integration with Snipe-IT is working!', 'some_features_disabled' => 'I-DEMO MODE: Ezinye izici zikhutshaziwe ngalokhu kufakwa futhi idatha kule nqubo izosetha kabusha nsuku zonke.', 'site_name' => 'Igama lesayithi', 'state' => 'Isimo', 'status_labels' => 'Amalebula wesimo', + 'status_label' => 'Status Label', 'status' => 'Isimo', 'accept_eula' => 'Acceptance Agreement', 'supplier' => 'Umphakeli', @@ -339,16 +340,16 @@ return [ 'view_all' => 'view all', 'hide_deleted' => 'Hide Deleted', 'email' => 'I-imeyili', - 'do_not_change' => 'Do Not Change', - 'bug_report' => 'Report a Bug', + 'do_not_change' => 'Do not change', + 'bug_report' => 'Report a bug', 'user_manual' => 'User\'s Manual', 'setup_step_1' => 'Step 1', 'setup_step_2' => 'Step 2', 'setup_step_3' => 'Step 3', 'setup_step_4' => 'Step 4', 'setup_config_check' => 'Configuration Check', - 'setup_create_database' => 'Create Database Tables', - 'setup_create_admin' => 'Create Admin User', + 'setup_create_database' => 'Create database tables', + 'setup_create_admin' => 'Create admin user', 'setup_done' => 'Finished!', 'bulk_edit_about_to' => 'You are about to edit the following: ', 'checked_out' => 'Ikhishiwe', diff --git a/resources/lang/zu-ZA/localizations.php b/resources/lang/zu-ZA/localizations.php index f1232dd13..f335ddc1b 100644 --- a/resources/lang/zu-ZA/localizations.php +++ b/resources/lang/zu-ZA/localizations.php @@ -40,7 +40,9 @@ return [ 'ms-MY'=> 'Malay', 'mi-NZ'=> 'Maori', 'mn-MN'=> 'Mongolian', - 'no-NO'=> 'Norwegian', + //'no-NO'=> 'Norwegian', + 'nb-NO'=> 'Norwegian Bokmål', + //'nn-NO'=> 'Norwegian Nynorsk', 'fa-IR'=> 'Persian', 'pl-PL'=> 'Polish', 'pt-PT'=> 'Portuguese', diff --git a/resources/lang/zu-ZA/validation.php b/resources/lang/zu-ZA/validation.php index 56df18fff..9e3782433 100644 --- a/resources/lang/zu-ZA/validation.php +++ b/resources/lang/zu-ZA/validation.php @@ -125,6 +125,8 @@ return [ 'symbols' => 'The :attribute field must contain at least one symbol.', 'uncompromised' => 'The given :attribute has appeared in a data leak. Please choose a different :attribute.', ], + 'percent' => 'The depreciation minimum must be between 0 and 100 when depreciation type is percentage.', + 'present' => 'I: insimu yemfanelo kufanele ibe khona.', 'present_if' => 'The :attribute field must be present when :other is :value.', 'present_unless' => 'The :attribute field must be present unless :other is :value.', @@ -188,6 +190,8 @@ return [ 'hashed_pass' => 'Iphasiwedi yakho yamanje ayilungile', 'dumbpwd' => 'Lelo phasiwedi livame kakhulu.', 'statuslabel_type' => 'Kumele ukhethe uhlobo lwelebula lesimo esivumelekile', + 'custom_field_not_found' => 'This field does not seem to exist, please double check your custom field names.', + 'custom_field_not_found_on_model' => 'This field seems to exist, but is not available on this Asset Model\'s fieldset.', // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP From a3d847151af4e1f4c1d51c84f5c728fcffce2924 Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 15 Aug 2024 15:19:27 +0100 Subject: [PATCH 117/118] Model name uniqueness Signed-off-by: snipe --- app/Models/AssetModel.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/AssetModel.php b/app/Models/AssetModel.php index 07e7a5e24..60ba29b49 100755 --- a/app/Models/AssetModel.php +++ b/app/Models/AssetModel.php @@ -29,7 +29,7 @@ class AssetModel extends SnipeModel // Declare the rules for the model validation protected $rules = [ - 'name' => 'required|min:1|max:255', + 'name' => 'required|min:1|max:255|unique:models,name', 'model_number' => 'max:255|nullable', 'min_amt' => 'integer|min:0|nullable', 'category_id' => 'required|integer|exists:categories,id', From b39a7c6f0c34d6f18531b572199e2990c193e0cc Mon Sep 17 00:00:00 2001 From: snipe Date: Thu, 15 Aug 2024 15:42:11 +0100 Subject: [PATCH 118/118] String constraint Signed-off-by: snipe --- app/Models/AssetModel.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Models/AssetModel.php b/app/Models/AssetModel.php index 60ba29b49..7a6662091 100755 --- a/app/Models/AssetModel.php +++ b/app/Models/AssetModel.php @@ -29,8 +29,8 @@ class AssetModel extends SnipeModel // Declare the rules for the model validation protected $rules = [ - 'name' => 'required|min:1|max:255|unique:models,name', - 'model_number' => 'max:255|nullable', + 'name' => 'string|required|min:1|max:255|unique:models,name', + 'model_number' => 'string|max:255|nullable', 'min_amt' => 'integer|min:0|nullable', 'category_id' => 'required|integer|exists:categories,id', 'manufacturer_id' => 'integer|exists:manufacturers,id|nullable',