diff --git a/.all-contributorsrc b/.all-contributorsrc index 146f6178ce..5dbb6fb2aa 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -3018,6 +3018,87 @@ "contributions": [ "code" ] + }, + { + "login": "koiakoia", + "name": "koiakoia", + "avatar_url": "https://avatars.githubusercontent.com/u/60405354?v=4", + "profile": "https://github.com/koiakoia", + "contributions": [ + "code" + ] + }, + { + "login": "mustafa-online", + "name": "Mustafa Online", + "avatar_url": "https://avatars.githubusercontent.com/u/5323832?v=4", + "profile": "https://github.com/mustafa-online", + "contributions": [ + "code" + ] + }, + { + "login": "franceslui", + "name": "franceslui", + "avatar_url": "https://avatars.githubusercontent.com/u/104601439?v=4", + "profile": "https://github.com/franceslui", + "contributions": [ + "code" + ] + }, + { + "login": "Q4kK", + "name": "Q4kK", + "avatar_url": "https://avatars.githubusercontent.com/u/125313163?v=4", + "profile": "https://github.com/Q4kK", + "contributions": [ + "code" + ] + }, + { + "login": "squintfox", + "name": "squintfox", + "avatar_url": "https://avatars.githubusercontent.com/u/55590532?v=4", + "profile": "https://github.com/squintfox", + "contributions": [ + "code" + ] + }, + { + "login": "jeffclay", + "name": "Jeff Clay", + "avatar_url": "https://avatars.githubusercontent.com/u/1380084?v=4", + "profile": "https://github.com/jeffclay", + "contributions": [ + "code" + ] + }, + { + "login": "PP-JN-RL", + "name": "Phil J R", + "avatar_url": "https://avatars.githubusercontent.com/u/52716446?v=4", + "profile": "https://github.com/PP-JN-RL", + "contributions": [ + "code" + ] + }, + { + "login": "chandanchowdhury", + "name": "i_virus", + "avatar_url": "https://avatars.githubusercontent.com/u/1496725?v=4", + "profile": "https://www.corelight.com/", + "contributions": [ + "code" + ] + }, + { + "login": "gitgrimbo", + "name": "Paul Grime", + "avatar_url": "https://avatars.githubusercontent.com/u/1020541?v=4", + "profile": "https://github.com/gitgrimbo", + "contributions": [ + "code" + ] } ] } diff --git a/.env.docker b/.env.docker index 87897b10db..7b9e2000cf 100644 --- a/.env.docker +++ b/.env.docker @@ -45,6 +45,7 @@ DB_SSL_KEY_PATH=null DB_SSL_CERT_PATH=null DB_SSL_CA_PATH=null DB_SSL_CIPHER=null +DB_SSL_VERIFY_SERVER=null # -------------------------------------------- # REQUIRED: OUTGOING MAIL SERVER SETTINGS diff --git a/.env.dusk.example b/.env.dusk.example index 074f6fc3d7..3a9765dc19 100644 --- a/.env.dusk.example +++ b/.env.dusk.example @@ -36,6 +36,7 @@ DB_SSL_KEY_PATH=null DB_SSL_CERT_PATH=null DB_SSL_CA_PATH=null DB_SSL_CIPHER=null +DB_SSL_VERIFY_SERVER=null # -------------------------------------------- # REQUIRED: OUTGOING MAIL SERVER SETTINGS diff --git a/.env.example b/.env.example index f8e1df2987..8f3e5a2d69 100644 --- a/.env.example +++ b/.env.example @@ -42,6 +42,7 @@ DB_SSL_KEY_PATH=null DB_SSL_CERT_PATH=null DB_SSL_CA_PATH=null DB_SSL_CIPHER=null +DB_SSL_VERIFY_SERVER=null # -------------------------------------------- # REQUIRED: OUTGOING MAIL SERVER SETTINGS @@ -86,6 +87,7 @@ COOKIE_DOMAIN=null SECURE_COOKIES=false API_TOKEN_EXPIRATION_YEARS=15 BS_TABLE_STORAGE=cookieStorage +BS_TABLE_DEEPLINK=true # -------------------------------------------- # OPTIONAL: SECURITY HEADER SETTINGS diff --git a/.github/workflows/codacy-analysis.yml b/.github/workflows/codacy-analysis.yml index d7438a7ae9..f8368dff83 100644 --- a/.github/workflows/codacy-analysis.yml +++ b/.github/workflows/codacy-analysis.yml @@ -36,7 +36,7 @@ jobs: # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis - name: Run Codacy Analysis CLI - uses: codacy/codacy-analysis-cli-action@v4.4.0 + uses: codacy/codacy-analysis-cli-action@v4.4.1 with: # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository # You can also omit the token and run the tools that support default configurations diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index afaad9a7a6..4278c082a1 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -432,6 +432,17 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken bilias
bilias

💻 coach1988
coach1988

💻 MrM
MrM

💻 + koiakoia
koiakoia

💻 + Mustafa Online
Mustafa Online

💻 + franceslui
franceslui

💻 + Q4kK
Q4kK

💻 + + + squintfox
squintfox

💻 + Jeff Clay
Jeff Clay

💻 + Phil J R
Phil J R

💻 + i_virus
i_virus

💻 + Paul Grime
Paul Grime

💻 diff --git a/README.md b/README.md index d237a6856c..5c8e80944c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,8 @@ It is built on [Laravel 8](http://laravel.com). Snipe-IT is actively developed and we [release quite frequently](https://github.com/snipe/snipe-it/releases). ([Check out the live demo here](https://snipeitapp.com/demo/).) -__This is web-based software__. This means there is no executable file (aka no .exe files), and it must be run on a web server and accessed through a web browser. It runs on any Mac OSX, flavor of Linux, as well as Windows, and we have a [Docker image](https://snipe-it.readme.io/docs/docker) available if that's what you're into. +> [!TIP] +> __This is web-based software__. This means there is no executable file (aka no .exe files), and it must be run on a web server and accessed through a web browser. It runs on any Mac OSX, any flavor of Linux, as well as Windows, and we have a [Docker image](https://snipe-it.readme.io/docs/docker) available if that's what you're into. ----- @@ -21,7 +22,7 @@ For instructions on installing and configuring Snipe-IT on your server, check ou If you're having trouble with the installation, please check the [Common Issues](https://snipe-it.readme.io/docs/common-issues) and [Getting Help](https://snipe-it.readme.io/docs/getting-help) documentation, and search this repository's open *and* closed issues for help. -[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) + ----- ### User's Manual @@ -32,8 +33,9 @@ For help using Snipe-IT, check out the [user's manual](https://snipe-it.readme.i Feel free to check out the [GitHub Issues for this project](https://github.com/snipe/snipe-it/issues) to open a bug report or see what open issues you can help with. Please search through existing issues (open *and* closed) to see if your question has already been answered before opening a new issue. -**PLEASE see the [Getting Help Guidelines](https://snipe-it.readme.io/docs/getting-help) and [Common Issues](https://snipe-it.readme.io/docs/common-issues) before opening a ticket, and be sure to complete all of the questions in the Github Issue template to help us to help you as quickly as possible.** - +> [!IMPORTANT] +> **PLEASE see the [Getting Help Guidelines](https://snipe-it.readme.io/docs/getting-help) and [Common Issues](https://snipe-it.readme.io/docs/common-issues) before opening a ticket, and be sure to complete all of the questions in the Github Issue template to help us to help you as quickly as possible.** +> ----- ### Upgrading @@ -57,6 +59,9 @@ Please see the [translations documentation](https://snipe-it.readme.io/docs/tran Since the release of the JSON REST API, several third-party developers have been developing modules and libraries to work with Snipe-IT. +> [!NOTE] +> As these were created by third-parties, Snipe-IT cannot provide support for these project, and you should contact the developers directly if you need assistance. Additionally, Snipe-IT makes no guarantees as to the reliability, accuracy or maintainability of these libraries. Use at your own risk. :) + - [Python Module](https://github.com/jbloomer/SnipeIT-PythonAPI) by [@jbloomer](https://github.com/jbloomer) - [SnipeSharp - .NET module in C#](https://github.com/barrycarey/SnipeSharp) by [@barrycarey](https://github.com/barrycarey) - [InQRy -unmaintained-](https://github.com/Microsoft/InQRy) by [@Microsoft](https://github.com/Microsoft) @@ -73,8 +78,6 @@ Since the release of the JSON REST API, several third-party developers have been - [UniFi to Snipe-IT](https://github.com/RodneyLeeBrands/UnifiSnipeSync) by [@karpadiem](https://github.com/karpadiem) - Python script that synchronizes UniFi devices with Snipe-IT. - [Kandji2Snipe](https://github.com/grokability/kandji2snipe) by [@briangoldstein](https://github.com/briangoldstein) - Python script that synchronizes Kandji with Snipe-IT. - [SnipeAgent](https://github.com/ReticentRobot/SnipeAgent) by @ReticentRobot - Windows agent for Snipe-IT - -As these were created by third-parties, Snipe-IT cannot provide support for these project, and you should contact the developers directly if you need assistance. Additionally, Snipe-IT makes no guarantees as to the reliability, accuracy or maintainability of these libraries. Use at your own risk. :) ----- @@ -92,4 +95,5 @@ The ERD is available [online here](https://drawsql.app/templates/snipe-it). ### Security -To report a security vulnerability, please email security@snipeitapp.com instead of using the issue tracker. +> [!IMPORTANT] +> **To report a security vulnerability, please email security@snipeitapp.com instead of using the issue tracker.** diff --git a/app/Console/Commands/LdapSync.php b/app/Console/Commands/LdapSync.php index 05f60ee4e1..bd91c2bf25 100755 --- a/app/Console/Commands/LdapSync.php +++ b/app/Console/Commands/LdapSync.php @@ -390,7 +390,7 @@ class LdapSync extends Command $user->location_id = $location->id; } } - + $location = null; $user->ldap_import = 1; $errors = ''; diff --git a/app/Console/Commands/SendExpectedCheckinAlerts.php b/app/Console/Commands/SendExpectedCheckinAlerts.php index 34e9609ce5..e042e8b088 100644 --- a/app/Console/Commands/SendExpectedCheckinAlerts.php +++ b/app/Console/Commands/SendExpectedCheckinAlerts.php @@ -9,7 +9,6 @@ use App\Notifications\ExpectedCheckinAdminNotification; use App\Notifications\ExpectedCheckinNotification; use Carbon\Carbon; use Illuminate\Console\Command; -use Illuminate\Support\Facades\Log; class SendExpectedCheckinAlerts extends Command { @@ -43,25 +42,31 @@ class SendExpectedCheckinAlerts extends Command public function handle() { $settings = Setting::getSettings(); - $whenNotify = Carbon::now(); - $assets = Asset::with('assignedTo')->whereNotNull('assigned_to')->whereNotNull('expected_checkin')->where('expected_checkin', '<=', $whenNotify)->get(); + $interval = $settings->audit_warning_days ?? 0; + $today = Carbon::now(); + $interval_date = $today->copy()->addDays($interval); + + $assets = Asset::whereNull('deleted_at')->DueOrOverdueForCheckin($settings)->orderBy('assets.expected_checkin', 'desc')->get(); + + $this->info($assets->count().' assets must be checked in on or before '.$interval_date.' is deadline'); - $this->info($whenNotify.' is deadline'); - $this->info($assets->count().' assets'); foreach ($assets as $asset) { - if ($asset->assigned && $asset->checkedOutToUser()) { - Log::info('Sending ExpectedCheckinNotification to ' . $asset->assigned->email); - $asset->assigned->notify((new ExpectedCheckinNotification($asset))); + if ($asset->assignedTo && (isset($asset->assignedTo->email)) && ($asset->assignedTo->email!='') && $asset->checkedOutToUser()) { + $this->info('Sending User ExpectedCheckinNotification to: '.$asset->assignedTo->email); + $asset->assignedTo->notify((new ExpectedCheckinNotification($asset))); } } if (($assets) && ($assets->count() > 0) && ($settings->alert_email != '')) { // Send a rollup to the admin, if settings dictate - $recipients = collect(explode(',', $settings->alert_email))->map(function ($item, $key) { + $recipients = collect(explode(',', $settings->alert_email))->map(function ($item) { return new AlertRecipient($item); }); + + $this->info('Sending Admin ExpectedCheckinNotification to: '.$settings->alert_email); \Notification::send($recipients, new ExpectedCheckinAdminNotification($assets)); + } } } diff --git a/app/Console/Commands/SendUpcomingAuditReport.php b/app/Console/Commands/SendUpcomingAuditReport.php index e9cba106c6..40ebb64c50 100644 --- a/app/Console/Commands/SendUpcomingAuditReport.php +++ b/app/Console/Commands/SendUpcomingAuditReport.php @@ -3,10 +3,8 @@ namespace App\Console\Commands; use App\Models\Asset; -use App\Models\License; -use App\Models\Recipients; +use App\Models\Recipients\AlertRecipient; use App\Models\Setting; -use App\Notifications\ExpiringAssetsNotification; use App\Notifications\SendUpcomingAuditNotification; use Carbon\Carbon; use DB; @@ -46,39 +44,24 @@ class SendUpcomingAuditReport extends Command public function handle() { $settings = Setting::getSettings(); + $interval = $settings->audit_warning_days ?? 0; + $today = Carbon::now(); + $interval_date = $today->copy()->addDays($interval); - if (($settings->alert_email != '') && ($settings->audit_warning_days) && ($settings->alerts_enabled == 1)) { + $assets = Asset::whereNull('deleted_at')->DueOrOverdueForAudit($settings)->orderBy('assets.next_audit_date', 'desc')->get(); + $this->info($assets->count().' assets must be audited in on or before '.$interval_date.' is deadline'); + + if (($assets) && ($assets->count() > 0) && ($settings->alert_email != '')) { // Send a rollup to the admin, if settings dictate - $recipients = collect(explode(',', $settings->alert_email))->map(function ($item, $key) { - return new \App\Models\Recipients\AlertRecipient($item); + $recipients = collect(explode(',', $settings->alert_email))->map(function ($item) { + return new AlertRecipient($item); }); - // Assets due for auditing + $this->info('Sending Admin SendUpcomingAuditNotification to: '.$settings->alert_email); + \Notification::send($recipients, new SendUpcomingAuditNotification($assets, $settings->audit_warning_days)); - $assets = Asset::whereNotNull('next_audit_date') - ->DueOrOverdueForAudit($settings) - ->orderBy('last_audit_date', 'asc')->get(); - - if ($assets->count() > 0) { - $this->info(trans_choice('mail.upcoming-audits', $assets->count(), - ['count' => $assets->count(), 'threshold' => $settings->audit_warning_days])); - \Notification::send($recipients, new SendUpcomingAuditNotification($assets, $settings->audit_warning_days)); - $this->info('Audit report sent to '.$settings->alert_email); - } else { - $this->info('No assets to be audited. No report sent.'); - } - } elseif ($settings->alert_email == '') { - $this->error('Could not send email. No alert email configured in settings'); - } elseif (! $settings->audit_warning_days) { - $this->error('No audit warning days set in Admin Notifications. No mail will be sent.'); - } elseif ($settings->alerts_enabled != 1) { - $this->info('Alerts are disabled in the settings. No mail will be sent'); - } else { - $this->error('Something went wrong. :( '); - $this->error('Admin Notifications Email Setting: '.$settings->alert_email); - $this->error('Admin Audit Warning Setting: '.$settings->audit_warning_days); - $this->error('Admin Alerts Emnabled: '.$settings->alerts_enabled); } + } } diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index b26887b6ce..b234e9cbf1 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -59,7 +59,7 @@ class AssetsController extends Controller * @since [v4.0] * @return \Illuminate\Http\JsonResponse */ - public function index(Request $request, $audit = null) + public function index(Request $request, $action = null, $upcoming_status = null) { $filter_non_deprecable_assets = false; @@ -94,6 +94,7 @@ class AssetsController extends Controller 'serial', 'model_number', 'last_checkout', + 'last_checkin', 'notes', 'expected_checkin', 'order_number', @@ -154,17 +155,44 @@ class AssetsController extends Controller $assets->TextSearch($request->input('search')); } - // This is used by the audit reporting routes - if (Gate::allows('audit', Asset::class)) { - switch ($audit) { - case 'due': - $assets->DueOrOverdueForAudit($settings); - break; - case 'overdue': - $assets->overdueForAudit($settings); - break; + + /** + * Handle due and overdue audits and checkin dates + */ + switch ($action) { + case 'audits': + + switch ($upcoming_status) { + case 'due': + $assets->DueForAudit($settings); + break; + case 'overdue': + $assets->OverdueForAudit(); + break; + case 'due-or-overdue': + $assets->DueOrOverdueForAudit($settings); + break; + } + break; + + case 'checkins': + switch ($upcoming_status) { + case 'due': + $assets->DueForCheckin($settings); + break; + case 'overdue': + $assets->OverdueForCheckin(); + break; + case 'due-or-overdue': + $assets->DueOrOverdueForCheckin($settings); + break; + } + break; } - } + + /** + * End handling due and overdue audits and checkin dates + */ // This is used by the sidenav, mostly @@ -591,6 +619,11 @@ class AssetsController extends Controller } } } + if ($field->element == 'checkbox') { + if(is_array($field_val)) { + $field_val = implode(',', $field_val); + } + } $asset->{$field->db_column} = $field_val; @@ -614,6 +647,8 @@ class AssetsController extends Controller } return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.create.success'))); + + return response()->json(Helper::formatStandardApiResponse('success', (new AssetsTransformer)->transformAsset($asset), trans('admin/hardware/message.create.success'))); } return response()->json(Helper::formatStandardApiResponse('error', null, $asset->getErrors()), 200); @@ -657,16 +692,26 @@ class AssetsController extends Controller $model = AssetModel::find($asset->model_id); // Update custom fields + $problems_updating_encrypted_custom_fields = false; if (($model) && (isset($model->fieldset))) { foreach ($model->fieldset->fields as $field) { + $field_val = $request->input($field->db_column, null); + if ($request->has($field->db_column)) { + if ($field->element == 'checkbox') { + if(is_array($field_val)) { + $field_val = implode(',', $field_val); + } + } if ($field->field_encrypted == '1') { if (Gate::allows('admin')) { - $asset->{$field->db_column} = \Crypt::encrypt($request->input($field->db_column)); + $field_val = Crypt::encrypt($field_val); + } else { + $problems_updating_encrypted_custom_fields = true; + continue; } - } else { - $asset->{$field->db_column} = $request->input($field->db_column); } + $asset->{$field->db_column} = $field_val; } } } @@ -692,7 +737,11 @@ class AssetsController extends Controller $asset->image = $asset->getImageUrl(); } - return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.success'))); + if ($problems_updating_encrypted_custom_fields) { + return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.encrypted_warning'))); + } else { + return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.success'))); + } } return response()->json(Helper::formatStandardApiResponse('error', null, $asset->getErrors()), 200); diff --git a/app/Http/Controllers/Api/ReportsController.php b/app/Http/Controllers/Api/ReportsController.php index a91d8a9bcc..fbeb78fc8f 100644 --- a/app/Http/Controllers/Api/ReportsController.php +++ b/app/Http/Controllers/Api/ReportsController.php @@ -32,19 +32,26 @@ class ReportsController extends Controller } if (($request->filled('item_type')) && ($request->filled('item_id'))) { - $actionlogs = $actionlogs->where('item_id', '=', $request->input('item_id')) + $actionlogs = $actionlogs->where(function($query) use ($request) + { + $query->where('item_id', '=', $request->input('item_id')) ->where('item_type', '=', 'App\\Models\\'.ucwords($request->input('item_type'))) ->orWhere(function($query) use ($request) { $query->where('target_id', '=', $request->input('item_id')) ->where('target_type', '=', 'App\\Models\\'.ucwords($request->input('item_type'))); }); + }); } if ($request->filled('action_type')) { $actionlogs = $actionlogs->where('action_type', '=', $request->input('action_type'))->orderBy('created_at', 'desc'); } + if ($request->filled('user_id')) { + $actionlogs = $actionlogs->where('user_id', '=', $request->input('user_id')); + } + if ($request->filled('action_source')) { $actionlogs = $actionlogs->where('action_source', '=', $request->input('action_source'))->orderBy('created_at', 'desc'); } diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index e9551d51a8..0faa541243 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -75,8 +75,8 @@ class UsersController extends Controller 'users.autoassign_licenses', 'users.website', - ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy',) - ->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count'); + ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy') + ->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count', 'managesUsers as manages_users_count', 'managedLocations as manages_locations_count'); if ($request->filled('activated')) { @@ -187,6 +187,14 @@ class UsersController extends Controller $users->has('accessories', '=', $request->input('accessories_count')); } + if ($request->filled('manages_users_count')) { + $users->has('manages_users_count', '=', $request->input('manages_users_count')); + } + + if ($request->filled('manages_locations_count')) { + $users->has('manages_locations_count', '=', $request->input('manages_locations_count')); + } + if ($request->filled('autoassign_licenses')) { $users->where('autoassign_licenses', '=', $request->input('autoassign_licenses')); } @@ -244,6 +252,8 @@ class UsersController extends Controller 'licenses_count', 'consumables_count', 'accessories_count', + 'manages_user_count', + 'manages_locations_count', 'phone', 'address', 'city', @@ -273,6 +283,7 @@ class UsersController extends Controller $users = $users->withTrashed(); } + // Apply companyable scope $users = Company::scopeCompanyables($users); @@ -403,9 +414,16 @@ class UsersController extends Controller public function show($id) { $this->authorize('view', User::class); - $user = User::withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count')->findOrFail($id); - return (new UsersTransformer)->transformUser($user); + $user = User::withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count', 'managesUsers as manages_users_count', 'managedLocations as manages_locations_count'); + + if ($user = Company::scopeCompanyables($user)->find($id)) { + $this->authorize('view', $user); + return (new UsersTransformer)->transformUser($user); + } + + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found', compact('id')))); + } @@ -423,6 +441,8 @@ class UsersController extends Controller $this->authorize('update', User::class); $user = User::findOrFail($id); + $user = Company::scopeCompanyables($user)->find($id); + $this->authorize('update', $user); /** * This is a janky hack to prevent people from changing admin demo user data on the public demo. @@ -459,11 +479,11 @@ class UsersController extends Controller if (! Auth::user()->isSuperUser()) { unset($permissions_array['superuser']); } + $user->permissions = $permissions_array; } - // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) ->where('assigned_to', $user->id)->update(['location_id' => $request->input('location_id', null)]); @@ -473,14 +493,9 @@ class UsersController extends Controller if ($user->save()) { - // Sync group memberships: - // This was changed in Snipe-IT v4.6.x to 4.7, since we upgraded to Laravel 5.5 - // which changes the behavior of has vs filled. - // The $request->has method will now return true even if the input value is an empty string or null. - // A new $request->filled method has was added that provides the previous behavior of the has method. - // Check if the request has groups passed and has a value if ($request->filled('groups')) { + $validator = Validator::make($request->all(), [ 'groups.*' => 'integer|exists:permission_groups,id', ]); @@ -488,10 +503,19 @@ class UsersController extends Controller if ($validator->fails()){ return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors())); } - $user->groups()->sync($request->input('groups')); + + // Only save groups if the user is a superuser + if (Auth::user()->isSuperUser()) { + $user->groups()->sync($request->input('groups')); + } + // The groups field has been passed but it is null, so we should blank it out } elseif ($request->has('groups')) { - $user->groups()->sync([]); + + // Only save groups if the user is a superuser + if (Auth::user()->isSuperUser()) { + $user->groups()->sync($request->input('groups')); + } } @@ -512,37 +536,43 @@ class UsersController extends Controller public function destroy($id) { $this->authorize('delete', User::class); - $user = User::findOrFail($id); + $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user = Company::scopeCompanyables($user)->find($id); $this->authorize('delete', $user); - if (($user->assets) && ($user->assets->count() > 0)) { - return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete_has_assets'))); - } + if ($user) { - if (($user->licenses) && ($user->licenses->count() > 0)) { - return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has '.$user->licenses->count().' license(s) associated with them and cannot be deleted.')); - } - - if (($user->accessories) && ($user->accessories->count() > 0)) { - return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has '.$user->accessories->count().' accessories associated with them.')); - } - - if (($user->managedLocations()) && ($user->managedLocations()->count() > 0)) { - return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has '.$user->managedLocations()->count().' locations that they manage.')); - } - - if ($user->delete()) { - - // Remove the user's avatar if they have one - if (Storage::disk('public')->exists('avatars/'.$user->avatar)) { - try { - Storage::disk('public')->delete('avatars/'.$user->avatar); - } catch (\Exception $e) { - \Log::debug($e); - } + $this->authorize('delete', $user); + + if (($user->assets) && ($user->assets->count() > 0)) { + return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete_has_assets'))); } - return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.delete'))); + if (($user->licenses) && ($user->licenses->count() > 0)) { + return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has ' . $user->licenses->count() . ' license(s) associated with them and cannot be deleted.')); + } + + if (($user->accessories) && ($user->accessories->count() > 0)) { + return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has ' . $user->accessories->count() . ' accessories associated with them.')); + } + + if (($user->managedLocations()) && ($user->managedLocations()->count() > 0)) { + return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has ' . $user->managedLocations()->count() . ' locations that they manage.')); + } + + if ($user->delete()) { + + // Remove the user's avatar if they have one + if (Storage::disk('public')->exists('avatars/' . $user->avatar)) { + try { + Storage::disk('public')->delete('avatars/' . $user->avatar); + } catch (\Exception $e) { + \Log::debug($e); + } + } + + return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.delete'))); + } } return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete'))); @@ -560,7 +590,31 @@ class UsersController extends Controller { $this->authorize('view', User::class); $this->authorize('view', Asset::class); - $assets = Asset::where('assigned_to', '=', $id)->where('assigned_type', '=', User::class)->with('model')->get(); + + $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user = Company::scopeCompanyables($user)->find($id); + $this->authorize('view', $user); + + $assets = Asset::where('assigned_to', '=', $id)->where('assigned_type', '=', User::class)->with('model'); + + + // Filter on category ID + if ($request->filled('category_id')) { + $assets = $assets->InCategory($request->input('category_id')); + } + + + // Filter on model ID + if ($request->filled('model_id')) { + + $model_ids = $request->input('model_id'); + if (!is_array($model_ids)) { + $model_ids = array($model_ids); + } + $assets = $assets->InModelList($model_ids); + } + + $assets = $assets->get(); return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request); } @@ -576,7 +630,10 @@ class UsersController extends Controller */ public function emailAssetList(Request $request, $id) { + $this->authorize('update', User::class); $user = User::findOrFail($id); + $user = Company::scopeCompanyables($user)->find($id); + $this->authorize('update', $user); if (empty($user->email)) { return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.inventorynotification.error'))); @@ -600,6 +657,7 @@ class UsersController extends Controller $this->authorize('view', User::class); $this->authorize('view', Consumable::class); $user = User::findOrFail($id); + $this->authorize('update', $user); $consumables = $user->consumables; return (new ConsumablesTransformer)->transformConsumables($consumables, $consumables->count(), $request); } @@ -616,6 +674,7 @@ class UsersController extends Controller { $this->authorize('view', User::class); $user = User::findOrFail($id); + $this->authorize('view', $user); $this->authorize('view', Accessory::class); $accessories = $user->accessories; @@ -636,6 +695,7 @@ class UsersController extends Controller $this->authorize('view', License::class); if ($user = User::where('id', $id)->withTrashed()->first()) { + $this->authorize('update', $user); $licenses = $user->licenses()->get(); return (new LicensesTransformer())->transformLicenses($licenses, $licenses->count()); } @@ -659,6 +719,7 @@ class UsersController extends Controller if ($request->filled('id')) { try { $user = User::find($request->get('id')); + $this->authorize('update', $user); $user->two_factor_secret = null; $user->two_factor_enrolled = 0; $user->saveQuietly(); diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 484a2e2f85..8d387f968f 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -7,6 +7,7 @@ use App\Http\Requests\ImageUploadRequest; use App\Models\Actionlog; use App\Models\Asset; use App\Models\AssetModel; +use App\Models\CustomField; use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -486,11 +487,11 @@ class AssetModelsController extends Controller * @param array $defaultValues * @return void */ - private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues) + private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues): bool { $data = array(); foreach ($defaultValues as $customFieldId => $defaultValue) { - $customField = \App\Models\CustomField::find($customFieldId); + $customField = CustomField::find($customFieldId); $data[$customField->db_column] = $defaultValue; } diff --git a/app/Http/Controllers/AssetModelsFilesController.php b/app/Http/Controllers/AssetModelsFilesController.php index a5419b428d..a4472c3504 100644 --- a/app/Http/Controllers/AssetModelsFilesController.php +++ b/app/Http/Controllers/AssetModelsFilesController.php @@ -38,7 +38,7 @@ class AssetModelsFilesController extends Controller $file_name = $request->handleFile('private_uploads/assetmodels/','model-'.$model->id,$file); - $model->logUpload($file_name, e($request->get('notes'))); + $model->logUpload($file_name, $request->get('notes')); } return redirect()->back()->with('success', trans('general.file_upload_success')); diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 82cb98abe9..30ffd8bba2 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -39,6 +39,12 @@ class AssetCheckinController extends Controller $this->authorize('checkin', $asset); + // This asset is already checked in, redirect + + if (is_null($asset->assignedTo)) { + return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.already_checked_in')); + } + return view('hardware/checkin', compact('asset'))->with('statusLabel_list', Helper::statusLabelList())->with('backto', $backto); } diff --git a/app/Http/Controllers/Assets/AssetFilesController.php b/app/Http/Controllers/Assets/AssetFilesController.php index 7f4258bda2..7debfb479c 100644 --- a/app/Http/Controllers/Assets/AssetFilesController.php +++ b/app/Http/Controllers/Assets/AssetFilesController.php @@ -38,7 +38,7 @@ class AssetFilesController extends Controller foreach ($request->file('file') as $file) { $file_name = $request->handleFile('private_uploads/assets/','hardware-'.$asset->id, $file); - $asset->logUpload($file_name, e($request->get('notes'))); + $asset->logUpload($file_name, $request->get('notes')); } return redirect()->back()->with('success', trans('admin/hardware/message.upload.success')); diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index 6054718e6b..ac755fd389 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -854,11 +854,11 @@ class AssetsController extends Controller return view('hardware/audit-due'); } - public function overdueForAudit() + public function dueForCheckin() { - $this->authorize('audit', Asset::class); + $this->authorize('checkin', Asset::class); - return view('hardware/audit-overdue'); + return view('hardware/checkin-due'); } diff --git a/app/Http/Controllers/LabelsController.php b/app/Http/Controllers/LabelsController.php index 4fe04dc1c5..1c5715b35f 100755 --- a/app/Http/Controllers/LabelsController.php +++ b/app/Http/Controllers/LabelsController.php @@ -14,6 +14,7 @@ use App\Models\Setting; use App\Models\Supplier; use App\Models\User; use App\View\Label as LabelView; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; class LabelsController extends Controller @@ -21,9 +22,9 @@ class LabelsController extends Controller /** * Returns the Label view with test data * - * @author Grant Le Roux - * @param string $labelName + * @param string $labelName * @return \Illuminate\Contracts\View\View + * @author Grant Le Roux */ public function show(string $labelName) { @@ -66,16 +67,18 @@ class LabelsController extends Controller $exampleAsset->model->category->id = 999999; $exampleAsset->model->category->name = trans('admin/labels/table.example_category'); - $customFieldColumns = CustomField::all()->pluck('db_column'); + $customFieldColumns = CustomField::where('field_encrypted', '=', 0)->pluck('db_column'); collect(explode(';', Setting::getSettings()->label2_fields)) ->filter() ->each(function ($item) use ($customFieldColumns, $exampleAsset) { - $pair = explode('=', $item); - - if ($customFieldColumns->contains($pair[1])) { - $exampleAsset->{$pair[1]} = "{{$pair[0]}}"; - } + $pair = explode('=', $item); + + if (array_key_exists(1, $pair)) { + if ($customFieldColumns->contains($pair[1])) { + $exampleAsset->{$pair[1]} = "{{$pair[0]}}"; + } + } }); $settings = Setting::getSettings(); diff --git a/app/Http/Controllers/Licenses/LicensesController.php b/app/Http/Controllers/Licenses/LicensesController.php index c55181c518..268c3f8b66 100755 --- a/app/Http/Controllers/Licenses/LicensesController.php +++ b/app/Http/Controllers/Licenses/LicensesController.php @@ -11,6 +11,7 @@ use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use Symfony\Component\HttpFoundation\StreamedResponse; /** * This controller handles all actions related to Licenses for @@ -289,4 +290,106 @@ class LicensesController extends Controller ->with('item', $license) ->with('maintained_list', $maintained_list); } + + /** + * Exports Licenses to CSV + * + * @author [G. Martinez] + * @since [v6.3] + * @return StreamedResponse + * @throws \Illuminate\Auth\Access\AuthorizationException + */ + public function getExportLicensesCsv() + { + $this->authorize('view', License::class); + \Debugbar::disable(); + + $response = new StreamedResponse(function () { + // Open output stream + $handle = fopen('php://output', 'w'); + $licenses= License::with('company', + 'manufacturer', + 'category', + 'supplier', + 'adminuser', + 'assignedusers') + ->orderBy('created_at', 'DESC'); + Company::scopeCompanyables($licenses) + ->chunk(500, function ($licenses) use ($handle) { + $headers = [ + // strtolower to prevent Excel from trying to open it as a SYLK file + strtolower(trans('general.id')), + trans('general.company'), + trans('general.name'), + trans('general.serial_number'), + trans('general.purchase_date'), + trans('general.purchase_cost'), + trans('general.order_number'), + trans('general.licenses_available'), + trans('admin/licenses/table.seats'), + trans('general.created_by'), + trans('general.depreciation'), + trans('general.updated_at'), + trans('admin/licenses/table.deleted_at'), + trans('general.email'), + trans('admin/hardware/form.fully_depreciated'), + trans('general.supplier'), + trans('admin/licenses/form.expiration'), + trans('admin/licenses/form.purchase_order'), + trans('admin/licenses/form.termination_date'), + trans('admin/licenses/form.maintained'), + trans('general.manufacturer'), + trans('general.category'), + trans('general.min_amt'), + trans('admin/licenses/form.reassignable'), + trans('general.notes'), + trans('general.created_at'), + ]; + + fputcsv($handle, $headers); + + foreach ($licenses as $license) { + // Add a new row with data + $values = [ + $license->id, + $license->company ? $license->company->name: '', + $license->name, + $license->serial, + $license->purchase_date, + $license->purchase_cost, + $license->order_number, + $license->free_seat_count, + $license->seats, + $license->adminuser->present()->fullName(), + $license->depreciation ? $license->depreciation->name: '', + $license->updated_at, + $license->deleted_at, + $license->email, + ( $license->depreciate == '1') ? trans('general.yes') : trans('general.no'), + ($license->supplier) ? $license->supplier->name: '', + $license->expiration_date, + $license->purchase_order, + $license->termination_date, + ( $license->maintained == '1') ? trans('general.yes') : trans('general.no'), + $license->manufacturer ? $license->manufacturer->name: '', + $license->category ? $license->category->name: '', + $license->min_amt, + ( $license->reassignable == '1') ? trans('general.yes') : trans('general.no'), + $license->notes, + $license->created_at, + ]; + + fputcsv($handle, $values); + } + }); + + // Close the output stream + fclose($handle); + }, 200, [ + 'Content-Type' => 'text/csv; charset=UTF-8', + 'Content-Disposition' => 'attachment; filename="licenses-'.date('Y-m-d-his').'.csv"', + ]); + + return $response; + } } diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 31cefa4436..c1ae800342 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -696,16 +696,17 @@ class ReportsController extends Controller ->whereBetween('action_date',[$checkout_start, $checkout_end]) ->pluck('item_id'); - $assets->whereIn('id',$actionlogassets); + $assets->whereIn('assets.id',$actionlogassets); } if (($request->filled('checkin_date_start'))) { - $assets->whereBetween('last_checkin', [ - Carbon::parse($request->input('checkin_date_start'))->startOfDay(), - // use today's date if `checkin_date_end` is not provided - Carbon::parse($request->input('checkin_date_end', now()))->endOfDay(), - ]); + $checkin_start = \Carbon::parse($request->input('checkin_date_start'))->startOfDay(); + // use today's date is `checkin_date_end` is not provided + $checkin_end = \Carbon::parse($request->input('checkin_date_end', now()))->endOfDay(); + + $assets->whereBetween('assets.last_checkin', [$checkin_start, $checkin_end ]); } + //last checkin is exporting, but currently is a date and not a datetime in the custom report ONLY. if (($request->filled('expected_checkin_start')) && ($request->filled('expected_checkin_end'))) { $assets->whereBetween('assets.expected_checkin', [$request->input('expected_checkin_start'), $request->input('expected_checkin_end')]); diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index b1cb620a83..3c09c900fa 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -20,6 +20,7 @@ use DB; use enshrined\svgSanitize\Sanitizer; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; +use Illuminate\Validation\Rule; use Image; use Input; use Redirect; @@ -499,6 +500,19 @@ class SettingsController extends Controller */ public function postSecurity(Request $request) { + $this->validate($request, [ + 'pwd_secure_complexity' => 'array', + 'pwd_secure_complexity.*' => [ + Rule::in([ + 'disallow_same_pwd_as_user_fields', + 'letters', + 'numbers', + 'symbols', + 'case_diff', + ]) + ] + ]); + if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); } @@ -790,10 +804,9 @@ class SettingsController extends Controller */ public function getLabels() { - return view('settings.labels', [ - 'setting' => Setting::getSettings(), - 'customFields' => CustomField::all(), - ]); + return view('settings.labels') + ->with('setting', Setting::getSettings()) + ->with('customFields', CustomField::where('field_encrypted', '=', 0)->get()); } /** diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 672e33f3d7..b0874cb569 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -182,8 +182,13 @@ class UsersController extends Controller */ public function edit($id) { - if ($user = User::find($id)) { - $this->authorize('update', $user); + + $this->authorize('update', User::class); + $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user = Company::scopeCompanyables($user)->find($id); + + if ($user) { + $permissions = config('permissions'); $groups = Group::pluck('name', 'id'); @@ -210,106 +215,116 @@ class UsersController extends Controller */ public function update(SaveUserRequest $request, $id = null) { - // We need to reverse the UI specific logic for our - // permissions here before we update the user. - $permissions = $request->input('permissions', []); - app('request')->request->set('permissions', $permissions); + $this->authorize('update', User::class); // This is a janky hack to prevent people from changing admin demo user data on the public demo. // The $ids 1 and 2 are special since they are seeded as superadmins in the demo seeder. // Thanks, jerks. You are why we can't have nice things. - snipe if ((($id == 1) || ($id == 2)) && (config('app.lock_passwords'))) { - return redirect()->route('users.index')->with('error', 'Permission denied. You cannot update user information for superadmins on the demo.'); + return redirect()->route('users.index')->with('error', trans('general.permission_denied_superuser_demo')); } - try { - $user = User::findOrFail($id); - } catch (ModelNotFoundException $e) { - return redirect()->route('users.index') - ->with('error', trans('admin/users/message.user_not_found', compact('id'))); - } - $this->authorize('update', $user); - // Figure out of this user was an admin before this edit - $orig_permissions_array = $user->decodePermissions(); - $orig_superuser = '0'; - if (is_array($orig_permissions_array)) { - if (array_key_exists('superuser', $orig_permissions_array)) { - $orig_superuser = $orig_permissions_array['superuser']; + // We need to reverse the UI specific logic for our + // permissions here before we update the user. + $permissions = $request->input('permissions', []); + app('request')->request->set('permissions', $permissions); + + + $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user = Company::scopeCompanyables($user)->find($id); + + // User is valid - continue... + if ($user) { + $this->authorize('update', $user); + + // Figure out of this user was an admin before this edit + $orig_permissions_array = $user->decodePermissions(); + $orig_superuser = '0'; + if (is_array($orig_permissions_array)) { + if (array_key_exists('superuser', $orig_permissions_array)) { + $orig_superuser = $orig_permissions_array['superuser']; + } } - } - // Only save groups if the user is a super user - if (Auth::user()->isSuperUser()) { - $user->groups()->sync($request->input('groups')); - } + // Only save groups if the user is a superuser + if (Auth::user()->isSuperUser()) { + $user->groups()->sync($request->input('groups')); + } - // Update the user - if ($request->filled('username')) { + // Update the user fields $user->username = trim($request->input('username')); - } - $user->email = trim($request->input('email')); - $user->first_name = $request->input('first_name'); - $user->last_name = $request->input('last_name'); - $user->two_factor_optin = $request->input('two_factor_optin') ?: 0; - $user->locale = $request->input('locale'); - $user->employee_num = $request->input('employee_num'); - $user->activated = $request->input('activated', 0); - $user->jobtitle = $request->input('jobtitle', null); - $user->phone = $request->input('phone'); - $user->location_id = $request->input('location_id', null); - $user->company_id = Company::getIdForUser($request->input('company_id', null)); - $user->manager_id = $request->input('manager_id', null); - $user->notes = $request->input('notes'); - $user->department_id = $request->input('department_id', null); - $user->address = $request->input('address', null); - $user->city = $request->input('city', null); - $user->state = $request->input('state', null); - $user->country = $request->input('country', null); - // if a user is editing themselves we should always keep activated true - $user->activated = $request->input('activated', $request->user()->is($user) ? 1 : 0); - $user->zip = $request->input('zip', null); - $user->remote = $request->input('remote', 0); - $user->vip = $request->input('vip', 0); - $user->website = $request->input('website', null); - $user->start_date = $request->input('start_date', null); - $user->end_date = $request->input('end_date', null); - $user->autoassign_licenses = $request->input('autoassign_licenses', 0); + $user->email = trim($request->input('email')); + $user->first_name = $request->input('first_name'); + $user->last_name = $request->input('last_name'); + $user->two_factor_optin = $request->input('two_factor_optin') ?: 0; + $user->locale = $request->input('locale'); + $user->employee_num = $request->input('employee_num'); + $user->activated = $request->input('activated', 0); + $user->jobtitle = $request->input('jobtitle', null); + $user->phone = $request->input('phone'); + $user->location_id = $request->input('location_id', null); + $user->company_id = Company::getIdForUser($request->input('company_id', null)); + $user->manager_id = $request->input('manager_id', null); + $user->notes = $request->input('notes'); + $user->department_id = $request->input('department_id', null); + $user->address = $request->input('address', null); + $user->city = $request->input('city', null); + $user->state = $request->input('state', null); + $user->country = $request->input('country', null); + // if a user is editing themselves we should always keep activated true + $user->activated = $request->input('activated', $request->user()->is($user) ? 1 : 0); + $user->zip = $request->input('zip', null); + $user->remote = $request->input('remote', 0); + $user->vip = $request->input('vip', 0); + $user->website = $request->input('website', null); + $user->start_date = $request->input('start_date', null); + $user->end_date = $request->input('end_date', null); + $user->autoassign_licenses = $request->input('autoassign_licenses', 0); + + // Update the location of any assets checked out to this user + Asset::where('assigned_type', User::class) + ->where('assigned_to', $user->id) + ->update(['location_id' => $request->input('location_id', null)]); + + // Do we want to update the user password? + if ($request->filled('password')) { + $user->password = bcrypt($request->input('password')); + } + // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) ->where('assigned_to', $user->id) ->update(['location_id' => $user->location_id]); - // Do we want to update the user password? - if ($request->filled('password')) { - $user->password = bcrypt($request->input('password')); + $permissions_array = $request->input('permission'); + + + // Strip out the superuser permission if the user isn't a superadmin + if (! Auth::user()->isSuperUser()) { + unset($permissions_array['superuser']); + $permissions_array['superuser'] = $orig_superuser; + } + + $user->permissions = json_encode($permissions_array); + + // Handle uploaded avatar + app(ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar'); + + if ($user->save()) { + // Redirect to the user page + return redirect()->route('users.index') + ->with('success', trans('admin/users/message.success.update')); + } + + return redirect()->back()->withInput()->withErrors($user->getErrors()); + + } - $permissions_array = $request->input('permission'); - - // Strip out the superuser permission if the user isn't a superadmin - if (! Auth::user()->isSuperUser()) { - unset($permissions_array['superuser']); - $permissions_array['superuser'] = $orig_superuser; - } - - $user->permissions = json_encode($permissions_array); - - // Handle uploaded avatar - app(ImageUploadRequest::class)->handleImages($user, 600, 'avatar', 'avatars', 'avatar'); - - //\Log::debug(print_r($user, true)); - - // Was the user updated? - if ($user->save()) { - // Redirect to the user page - return redirect()->route('users.index') - ->with('success', trans('admin/users/message.success.update')); - } - - return redirect()->back()->withInput()->withErrors($user->getErrors()); + return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', compact('id'))); } /** @@ -323,12 +338,13 @@ class UsersController extends Controller */ public function destroy($id = null) { - try { - // Get user information - $user = User::findOrFail($id); - // Authorize takes care of many of our logic checks now. - $this->authorize('delete', User::class); + $this->authorize('delete', User::class); + $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user = Company::scopeCompanyables($user)->find($id); + + + if ($user) { // Check if we are not trying to delete ourselves if ($user->id === Auth::id()) { // Redirect to the user management page @@ -362,16 +378,12 @@ class UsersController extends Controller // Delete the user $user->delete(); - - // Prepare the success message - // Redirect to the user management page return redirect()->route('users.index')->with('success', trans('admin/users/message.success.delete')); - } catch (ModelNotFoundException $e) { - // Prepare the error message - // Redirect to the user management page - return redirect()->route('users.index') - ->with('error', trans('admin/users/message.user_not_found', compact('id'))); } + + return redirect()->route('users.index') + ->with('error', trans('admin/users/message.user_not_found', compact('id'))); + } /** @@ -427,59 +439,25 @@ class UsersController extends Controller */ public function show($userId = null) { - if (! $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed()->find($userId)) { - // Redirect to the user management page - return redirect()->route('users.index') - ->with('error', trans('admin/users/message.user_not_found', ['id' => $userId])); - } + // Make sure the user can view users at all + $this->authorize('view', User::class); - $userlog = $user->userlog->load('item'); + $user = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user = Company::scopeCompanyables($user)->find($userId); + // Make sure they can view this particular user $this->authorize('view', $user); - return view('users/view', compact('user', 'userlog')) - ->with('settings', Setting::getSettings()); - } - - /** - * Unsuspend a user. - * - * @author [A. Gianotto] [] - * @since [v1.0] - * @param int $id - * @return Redirect - * @throws \Illuminate\Auth\Access\AuthorizationException - */ - public function getUnsuspend($id = null) - { - try { - // Get user information - $user = User::findOrFail($id); - $this->authorize('update', $user); - - // Check if we are not trying to unsuspend ourselves - if ($user->id === Auth::id()) { - // Prepare the error message - $error = trans('admin/users/message.error.unsuspend'); - // Redirect to the user management page - return redirect()->route('users.index')->with('error', $error); - } - - // Do we have permission to unsuspend this user? - if ($user->isSuperUser() && ! Auth::user()->isSuperUser()) { - // Redirect to the user management page - return redirect()->route('users.index')->with('error', 'Insufficient permissions!'); - } - - // Redirect to the user management page - return redirect()->route('users.index')->with('success', trans('admin/users/message.success.unsuspend')); - } catch (ModelNotFoundException $e) { - // Redirect to the user management page - return redirect()->route('users.index') - ->with('error', trans('admin/users/message.user_not_found', compact('id'))); + if ($user) { + $userlog = $user->userlog->load('item'); + return view('users/view', compact('user', 'userlog'))->with('settings', Setting::getSettings()); } + + return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', ['id' => $userId])); + } + /** * Return a view containing a pre-populated new user form, * populated with some fields from an existing user. @@ -493,22 +471,34 @@ class UsersController extends Controller public function getClone(Request $request, $id = null) { $this->authorize('create', User::class); + // We need to reverse the UI specific logic for our // permissions here before we update the user. $permissions = $request->input('permissions', []); app('request')->request->set('permissions', $permissions); - try { - // Get the user information - $user_to_clone = User::withTrashed()->find($id); + + $user_to_clone = User::with('assets', 'assets.model', 'consumables', 'accessories', 'licenses', 'userloc')->withTrashed(); + $user_to_clone = Company::scopeCompanyables($user_to_clone)->find($id); + + // Make sure they can view this particular user + $this->authorize('view', $user_to_clone); + + + if ($user_to_clone) { + + $user = clone $user_to_clone; + + // Blank out some fields $user->first_name = ''; $user->last_name = ''; $user->email = substr($user->email, ($pos = strpos($user->email, '@')) !== false ? $pos : 0); $user->id = null; - // Get this user groups + // Get this user's groups $userGroups = $user_to_clone->groups()->pluck('name', 'id'); + // Get all the available permissions $permissions = config('permissions'); $clonedPermissions = $user_to_clone->decodePermissions(); @@ -517,16 +507,14 @@ class UsersController extends Controller // Show the page return view('users/edit', compact('permissions', 'userPermissions')) - ->with('user', $user) - ->with('groups', Group::pluck('name', 'id')) - ->with('userGroups', $userGroups) - ->with('clone_user', $user_to_clone); - } catch (ModelNotFoundException $e) { - // Prepare the error message - // Redirect to the user management page - return redirect()->route('users.index') - ->with('error', trans('admin/users/message.user_not_found', compact('id'))); + ->with('user', $user) + ->with('groups', Group::pluck('name', 'id')) + ->with('userGroups', $userGroups) + ->with('clone_user', $user_to_clone); } + + return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', compact('id'))); + } /** @@ -546,8 +534,20 @@ class UsersController extends Controller // Open output stream $handle = fopen('php://output', 'w'); - User::with('assets', 'accessories', 'consumables', 'department', 'licenses', 'manager', 'groups', 'userloc', 'company') - ->orderBy('created_at', 'DESC') + $users = User::with( + 'assets', + 'accessories', + 'consumables', + 'department', + 'licenses', + 'manager', + 'groups', + 'userloc', + 'company' + )->orderBy('created_at', 'DESC'); + + // FMCS scoping + Company::scopeCompanyables($users) ->chunk(500, function ($users) use ($handle) { $headers = [ // strtolower to prevent Excel from trying to open it as a SYLK file @@ -565,7 +565,7 @@ class UsersController extends Controller trans('general.licenses'), trans('general.accessories'), trans('general.consumables'), - trans('admin/users/table.groups'), + trans('general.groups'), trans('general.notes'), trans('admin/users/table.activated'), trans('general.created_at'), @@ -626,7 +626,11 @@ class UsersController extends Controller public function printInventory($id) { $this->authorize('view', User::class); - $show_user = User::where('id', $id)->withTrashed()->first(); + $show_user = Company::scopeCompanyables(User::where('id', $id)->withTrashed()->first()); + + // Make sure they can view this particular user + $this->authorize('view', $show_user); + $assets = Asset::where('assigned_to', $id)->where('assigned_type', User::class)->with('model', 'model.category')->get(); $accessories = $show_user->accessories()->get(); $consumables = $show_user->consumables()->get(); @@ -651,16 +655,23 @@ class UsersController extends Controller { $this->authorize('view', User::class); - if (!$user = User::find($id)) { - return redirect()->back() - ->with('error', trans('admin/users/message.user_not_found', ['id' => $id])); - } - if (empty($user->email)) { - return redirect()->back()->with('error', trans('admin/users/message.user_has_no_email')); + $user = Company::scopeCompanyables(User::find($id)); + + // Make sure they can view this particular user + $this->authorize('view', $user); + + if ($user) { + + if (empty($user->email)) { + return redirect()->back()->with('error', trans('admin/users/message.user_has_no_email')); + } + + $user->notify((new CurrentInventory($user))); + return redirect()->back()->with('success', trans('admin/users/general.user_notified')); } - $user->notify((new CurrentInventory($user))); - return redirect()->back()->with('success', trans('admin/users/general.user_notified')); + return redirect()->back()->with('error', trans('admin/users/message.user_not_found', ['id' => $id])); + } /** @@ -672,19 +683,19 @@ class UsersController extends Controller */ public function sendPasswordReset($id) { - if (($user = User::find($id)) && ($user->activated == '1') && ($user->email != '') && ($user->ldap_import == '0')) { + if (($user = Company::scopeCompanyables(User::find($id))) && ($user->activated == '1') && ($user->email != '') && ($user->ldap_import == '0')) { $credentials = ['email' => trim($user->email)]; try { Password::sendResetLink($credentials); - return redirect()->back()->with('success', trans('admin/users/message.password_reset_sent', ['email' => $user->email])); + } catch (\Exception $e) { - return redirect()->back()->with('error', ' Error sending email. :( '); + return redirect()->back()->with('error', trans('general.error_sending_email')); } } - return redirect()->back()->with('error', 'User is not activated, is LDAP synced, or does not have an email address '); + return redirect()->back()->with('error', trans('general.pwd_reset_not_sent')); } } diff --git a/app/Http/Middleware/AssetCountForSidebar.php b/app/Http/Middleware/AssetCountForSidebar.php index 5d9656f5c1..fa439f7753 100644 --- a/app/Http/Middleware/AssetCountForSidebar.php +++ b/app/Http/Middleware/AssetCountForSidebar.php @@ -5,6 +5,7 @@ namespace App\Http\Middleware; use App\Models\Asset; use Auth; use Closure; +use App\Models\Setting; class AssetCountForSidebar { @@ -17,6 +18,32 @@ class AssetCountForSidebar */ public function handle($request, Closure $next) { + /** + * This needs to be set for the /setup process, since the tables might not exist yet + */ + $total_assets = 0; + $total_due_for_checkin = 0; + $total_overdue_for_checkin = 0; + $total_due_for_audit = 0; + $total_overdue_for_audit = 0; + + try { + $settings = Setting::getSettings(); + view()->share('settings', $settings); + } catch (\Exception $e) { + \Log::debug($e); + } + + try { + $total_assets = Asset::count(); + if ($settings->show_archived_in_list != '1') { + $total_assets -= Asset::Archived()->count(); + } + view()->share('total_assets', $total_assets); + } catch (\Exception $e) { + \Log::debug($e); + } + try { $total_rtd_sidebar = Asset::RTD()->count(); view()->share('total_rtd_sidebar', $total_rtd_sidebar); @@ -59,6 +86,37 @@ class AssetCountForSidebar \Log::debug($e); } + try { + $total_due_for_audit = Asset::DueForAudit($settings)->count(); + view()->share('total_due_for_audit', $total_due_for_audit); + } catch (\Exception $e) { + \Log::debug($e); + } + + try { + $total_overdue_for_audit = Asset::OverdueForAudit()->count(); + view()->share('total_overdue_for_audit', $total_overdue_for_audit); + } catch (\Exception $e) { + \Log::debug($e); + } + + try { + $total_due_for_checkin = Asset::DueForCheckin($settings)->count(); + view()->share('total_due_for_checkin', $total_due_for_checkin); + } catch (\Exception $e) { + \Log::debug($e); + } + + try { + $total_overdue_for_checkin = Asset::OverdueForCheckin()->count(); + view()->share('total_overdue_for_checkin', $total_overdue_for_checkin); + } catch (\Exception $e) { + \Log::debug($e); + } + + view()->share('total_due_and_overdue_for_checkin', ($total_due_for_checkin + $total_overdue_for_checkin)); + view()->share('total_due_and_overdue_for_audit', ($total_due_for_audit + $total_overdue_for_audit)); + return $next($request); } } diff --git a/app/Http/Requests/ImageUploadRequest.php b/app/Http/Requests/ImageUploadRequest.php index 25156181e9..9677111059 100644 --- a/app/Http/Requests/ImageUploadRequest.php +++ b/app/Http/Requests/ImageUploadRequest.php @@ -36,6 +36,7 @@ class ImageUploadRequest extends Request return [ 'image' => 'mimes:png,gif,jpg,jpeg,svg,bmp,svg+xml,webp,avif', 'avatar' => 'mimes:png,gif,jpg,jpeg,svg,bmp,svg+xml,webp,avif', + 'favicon' => 'mimes:png,gif,jpg,jpeg,svg,bmp,svg+xml,webp,image/x-icon,image/vnd.microsoft.icon,ico', ]; } @@ -103,9 +104,9 @@ class ImageUploadRequest extends Request \Log::info('File name will be: '.$file_name); \Log::debug('File extension is: '.$ext); - if (($image->getMimeType() == 'image/avif') || ($image->getMimeType() == 'image/webp')) { - // If the file is a webp or avif, we need to just move it since webp support - // needs to be compiled into gd for resizing to be available + if (($image->getMimeType() == 'image/vnd.microsoft.icon') || ($image->getMimeType() == 'image/x-icon') || ($image->getMimeType() == 'image/avif') || ($image->getMimeType() == 'image/webp')) { + // If the file is an icon, webp or avif, we need to just move it since gd doesn't support resizing + // icons or avif, and webp support and needs to be compiled into gd for resizing to be available Storage::disk('public')->put($path.'/'.$file_name, file_get_contents($image)); } elseif($image->getMimeType() == 'image/svg+xml') { diff --git a/app/Http/Requests/StoreAssetRequest.php b/app/Http/Requests/StoreAssetRequest.php index 74988b6c62..007dd26843 100644 --- a/app/Http/Requests/StoreAssetRequest.php +++ b/app/Http/Requests/StoreAssetRequest.php @@ -4,6 +4,9 @@ namespace App\Http\Requests; use App\Models\Asset; use App\Models\Company; +use App\Models\Setting; +use Carbon\Carbon; +use Carbon\Exceptions\InvalidFormatException; use Illuminate\Support\Facades\Gate; class StoreAssetRequest extends ImageUploadRequest @@ -27,6 +30,8 @@ class StoreAssetRequest extends ImageUploadRequest ? Company::getIdForCurrentUser($this->company_id) : $this->company_id; + $this->parseLastAuditDate(); + $this->merge([ 'asset_tag' => $this->asset_tag ?? Asset::autoincrement_asset(), 'company_id' => $idForCurrentUser, @@ -41,10 +46,52 @@ class StoreAssetRequest extends ImageUploadRequest */ public function rules(): array { - $rules = array_merge( - (new Asset)->getRules(), + $modelRules = (new Asset)->getRules(); + + if (Setting::getSettings()->digit_separator === '1.234,56' && is_string($this->input('purchase_cost'))) { + // If purchase_cost was submitted as a string with a comma separator + // then we need to ignore the normal numeric rules. + // Since the original rules still live on the model they will be run + // right before saving (and after purchase_cost has been + // converted to a float via setPurchaseCostAttribute). + $modelRules = $this->removeNumericRulesFromPurchaseCost($modelRules); + } + + return array_merge( + $modelRules, parent::rules(), ); + } + + private function parseLastAuditDate(): void + { + if ($this->input('last_audit_date')) { + try { + $lastAuditDate = Carbon::parse($this->input('last_audit_date')); + + $this->merge([ + 'last_audit_date' => $lastAuditDate->startOfDay()->format('Y-m-d H:i:s'), + ]); + } catch (InvalidFormatException $e) { + // we don't need to do anything here... + // we'll keep the provided date in an + // invalid format so validation picks it up later + } + } + } + + private function removeNumericRulesFromPurchaseCost(array $rules): array + { + $purchaseCost = $rules['purchase_cost']; + + // If rule is in "|" format then turn it into an array + if (is_string($purchaseCost)) { + $purchaseCost = explode('|', $purchaseCost); + } + + $rules['purchase_cost'] = array_filter($purchaseCost, function ($rule) { + return $rule !== 'numeric' && $rule !== 'gte:0'; + }); return $rules; } diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index b9191d2e63..8a3fea0d00 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -88,6 +88,7 @@ class AssetsTransformer 'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'), 'age' => $asset->purchase_date ? $asset->purchase_date->diffForHumans() : '', 'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'), + 'last_checkin' => Helper::getFormattedDateObject($asset->last_checkin, 'datetime'), 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), 'purchase_cost' => Helper::formatCurrencyOutput($asset->purchase_cost), 'checkin_counter' => (int) $asset->checkin_counter, diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index 0ebaca2692..64752d0445 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -21,6 +21,7 @@ class UsersTransformer public function transformUser(User $user) { + $array = [ 'id' => (int) $user->id, 'avatar' => e($user->present()->gravatar), @@ -64,6 +65,8 @@ class UsersTransformer 'licenses_count' => (int) $user->licenses_count, 'accessories_count' => (int) $user->accessories_count, 'consumables_count' => (int) $user->consumables_count, + 'manages_users_count' => (int) $user->manages_users_count, + 'manages_locations_count' => (int) $user->manages_locations_count, 'company' => ($user->company) ? ['id' => (int) $user->company->id, 'name'=> e($user->company->name)] : null, 'created_by' => ($user->createdBy) ? [ 'id' => (int) $user->createdBy->id, diff --git a/app/Models/Asset.php b/app/Models/Asset.php index c2a2a8d995..c5373a04e2 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -74,9 +74,9 @@ class Asset extends Depreciable 'eol_explicit' => 'boolean', 'last_checkout' => 'datetime', 'last_checkin' => 'datetime', - 'expected_checkin' => 'date', + 'expected_checkin' => 'datetime:m-d-Y', 'last_audit_date' => 'datetime', - 'next_audit_date' => 'date', + 'next_audit_date' => 'datetime:m-d-Y', 'model_id' => 'integer', 'status_id' => 'integer', 'company_id' => 'integer', @@ -96,7 +96,10 @@ class Asset extends Depreciable 'company_id' => 'nullable|integer|exists:companies,id', 'warranty_months' => 'nullable|numeric|digits_between:0,240', 'last_checkout' => 'nullable|date_format:Y-m-d H:i:s', + 'last_checkin' => 'nullable|date_format:Y-m-d H:i:s', 'expected_checkin' => 'nullable|date', + 'last_audit_date' => 'nullable|date_format:Y-m-d H:i:s', + 'next_audit_date' => 'nullable|date|after:last_audit_date', 'location_id' => 'nullable|exists:locations,id', 'rtd_location_id' => 'nullable|exists:locations,id', 'purchase_date' => 'nullable|date|date_format:Y-m-d', @@ -167,6 +170,8 @@ class Asset extends Depreciable 'expected_checkin', 'next_audit_date', 'last_audit_date', + 'last_checkin', + 'last_checkout', 'asset_eol_date', ]; @@ -1158,10 +1163,11 @@ class Asset extends Depreciable public function scopeDueForAudit($query, $settings) { $interval = $settings->audit_warning_days ?? 0; + $today = Carbon::now(); + $interval_date = $today->copy()->addDays($interval)->format('Y-m-d'); return $query->whereNotNull('assets.next_audit_date') - ->where('assets.next_audit_date', '>=', Carbon::now()) - ->whereRaw("DATE_SUB(assets.next_audit_date, INTERVAL $interval DAY) <= '".Carbon::now()."'") + ->whereBetween('assets.next_audit_date', [$today->format('Y-m-d'), $interval_date]) ->where('assets.archived', '=', 0) ->NotArchived(); } @@ -1183,7 +1189,7 @@ class Asset extends Depreciable public function scopeOverdueForAudit($query) { return $query->whereNotNull('assets.next_audit_date') - ->where('assets.next_audit_date', '<', Carbon::now()) + ->where('assets.next_audit_date', '<', Carbon::now()->format('Y-m-d')) ->where('assets.archived', '=', 0) ->NotArchived(); } @@ -1204,14 +1210,69 @@ class Asset extends Depreciable public function scopeDueOrOverdueForAudit($query, $settings) { - $interval = $settings->audit_warning_days ?? 0; - return $query->whereNotNull('assets.next_audit_date') - ->whereRaw('DATE_SUB('.DB::getTablePrefix()."assets.next_audit_date, INTERVAL $interval DAY) <= '".Carbon::now()."'") + return $query->where(function ($query) { + $query->OverdueForAudit(); + })->orWhere(function ($query) use ($settings) { + $query->DueForAudit($settings); + }); + } + + + /** + * Query builder scope for Assets that are DUE for checkin, based on the assets.expected_checkin + * and settings.audit_warning_days. It checks to see if assets.expected_checkin is now + * + * @author A. Gianotto + * @since v6.4.0 + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + + public function scopeDueForCheckin($query, $settings) + { + $interval = $settings->audit_warning_days ?? 0; + $today = Carbon::now(); + $interval_date = $today->copy()->addDays($interval)->format('Y-m-d'); + + return $query->whereNotNull('assets.expected_checkin') + ->whereBetween('assets.expected_checkin', [$today->format('Y-m-d'), $interval_date]) ->where('assets.archived', '=', 0) + ->whereNotNull('assets.assigned_to') ->NotArchived(); } + /** + * Query builder scope for Assets that are overdue for checkin OR overdue + * + * @author A. Gianotto + * @since v6.4.0 + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOverdueForCheckin($query) + { + return $query->whereNotNull('assets.expected_checkin') + ->where('assets.expected_checkin', '<', Carbon::now()->format('Y-m-d')) + ->where('assets.archived', '=', 0) + ->whereNotNull('assets.assigned_to') + ->NotArchived(); + } + + /** + * Query builder scope for Assets that are due for checkin OR overdue + * + * @author A. Gianotto + * @since v6.4.0 + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeDueOrOverdueForCheckin($query, $settings) + { + return $query->where(function ($query) { + $query->OverdueForCheckin(); + })->orWhere(function ($query) use ($settings) { + $query->DueForCheckin($settings); + }); + } + /** * Query builder scope for Archived assets counting diff --git a/app/Models/Company.php b/app/Models/Company.php index 60a8022ed7..8f8e71ff5c 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -81,26 +81,6 @@ final class Company extends SnipeModel } } - /** - * Scoping table queries, determining if a logged in user is part of a company, and only allows - * that user to see items associated with that company - */ - private static function scopeCompanyablesDirectly($query, $column = 'company_id', $table_name = null) - { - if (Auth::user()) { - $company_id = Auth::user()->company_id; - } else { - $company_id = null; - } - - $table = ($table_name) ? $table_name."." : $query->getModel()->getTable()."."; - - if (\Schema::hasColumn($query->getModel()->getTable(), $column)) { - return $query->where($table.$column, '=', $company_id); - } else { - return $query->join('users as users_comp', 'users_comp.id', 'user_id')->where('users_comp.company_id', '=', $company_id); - } - } public static function getIdFromInput($unescaped_input) { @@ -141,25 +121,49 @@ final class Company extends SnipeModel } } + /** + * Check to see if the current user should have access to the model. + * I hate this method and I think it should be refactored. + * + * @param $companyable + * @return bool|void + */ public static function isCurrentUserHasAccess($companyable) { + // When would this even happen tho?? if (is_null($companyable)) { return false; - } elseif (! static::isFullMultipleCompanySupportEnabled()) { - return true; - } elseif (!$companyable instanceof Company && !\Schema::hasColumn($companyable->getModel()->getTable(), 'company_id')) { - // This is primary for the gate:allows-check in location->isDeletable() - // Locations don't have a company_id so without this it isn't possible to delete locations with FullMultipleCompanySupport enabled - // because this function is called by SnipePermissionsPolicy->before() - return true; - } else { - if (Auth::user()) { - $current_user_company_id = Auth::user()->company_id; - $companyable_company_id = $companyable->company_id; + } - return $current_user_company_id == null || $current_user_company_id == $companyable_company_id || Auth::user()->isSuperUser(); + // If FMCS is not enabled, everyone has access, return true + if (! static::isFullMultipleCompanySupportEnabled()) { + return true; + } + + // Again, where would this happen? But check that $companyable is not a string + if (!is_string($companyable)) { + $company_table = $companyable->getModel()->getTable(); + try { + // This is primary for the gate:allows-check in location->isDeletable() + // Locations don't have a company_id so without this it isn't possible to delete locations with FullMultipleCompanySupport enabled + // because this function is called by SnipePermissionsPolicy->before() + if (!$companyable instanceof Company && !\Schema::hasColumn($company_table, 'company_id')) { + return true; + } + + } catch (\Exception $e) { + \Log::warning($e); } } + + + if (Auth::user()) { + \Log::warning('Companyable is '.$companyable); + $current_user_company_id = Auth::user()->company_id; + $companyable_company_id = $companyable->company_id; + return $current_user_company_id == null || $current_user_company_id == $companyable_company_id || Auth::user()->isSuperUser(); + } + } public static function isCurrentUserAuthorized() @@ -190,6 +194,10 @@ final class Company extends SnipeModel && ($this->users()->count() === 0); } + /** + * @param $unescaped_input + * @return int|mixed|string|null + */ public static function getIdForUser($unescaped_input) { if (! static::isFullMultipleCompanySupportEnabled() || Auth::user()->isSuperUser()) { @@ -199,38 +207,6 @@ final class Company extends SnipeModel } } - public static function scopeCompanyables($query, $column = 'company_id', $table_name = null) - { - // If not logged in and hitting this, assume we are on the command line and don't scope?' - if (! static::isFullMultipleCompanySupportEnabled() || (Auth::check() && Auth::user()->isSuperUser()) || (! Auth::check())) { - return $query; - } else { - return static::scopeCompanyablesDirectly($query, $column, $table_name); - } - } - - public static function scopeCompanyableChildren(array $companyable_names, $query) - { - if (count($companyable_names) == 0) { - throw new Exception('No Companyable Children to scope'); - } elseif (! static::isFullMultipleCompanySupportEnabled() || (Auth::check() && Auth::user()->isSuperUser())) { - return $query; - } else { - $f = function ($q) { - static::scopeCompanyablesDirectly($q); - }; - - $q = $query->where(function ($q) use ($companyable_names, $f) { - $q2 = $q->whereHas($companyable_names[0], $f); - - for ($i = 1; $i < count($companyable_names); $i++) { - $q2 = $q2->orWhereHas($companyable_names[$i], $f); - } - }); - - return $q; - } - } public function users() { @@ -261,4 +237,97 @@ final class Company extends SnipeModel { return $this->hasMany(Component::class, 'company_id'); } + + /** + * START COMPANY SCOPING FOR FMCS + */ + + /** + * Scoping table queries, determining if a logged in user is part of a company, and only allows the user to access items associated with that company if FMCS is enabled. + * + * This method is the one that the CompanyableTrait uses to contrain queries automatically, however that trait CANNOT be + * applied to the user's model, since it causes an infinite loop against the authenticated user. + * + * @todo - refactor that trait to handle the user's model as well. + * + * @author [A. Gianotto] + * @param $query + * @param $column + * @param $table_name + * @return mixed + */ + public static function scopeCompanyables($query, $column = 'company_id', $table_name = null) + { + // If not logged in and hitting this, assume we are on the command line and don't scope?' + if (! static::isFullMultipleCompanySupportEnabled() || (Auth::check() && Auth::user()->isSuperUser()) || (! Auth::check())) { + return $query; + } else { + \Log::debug('Fire scopeCompanyablesDirectly.'); + return static::scopeCompanyablesDirectly($query, $column, $table_name); + } + } + + /** + * Scoping table queries, determining if a logged in user is part of a company, and only allows + * that user to see items associated with that company + */ + private static function scopeCompanyablesDirectly($query, $column = 'company_id', $table_name = null) + { + // Get the company ID of the logged in user, or set it to null if there is no company assicoated with the user + if (Auth::user()) { + \Log::debug('Admin company is: '.Auth::user()->company_id); + $company_id = Auth::user()->company_id; + } else { + $company_id = null; + } + + // Dynamically get the table name if it's not passed in, based on the model we're querying against + $table = ($table_name) ? $table_name."." : $query->getModel()->getTable()."."; + \Log::debug('Model is: '.$query->getModel()); + + \Log::debug('Table is: '.$table); + + // If the column exists in the table, use it to scope the query + if (\Schema::hasColumn($query->getModel()->getTable(), $column)) { + return $query->where($table.$column, '=', $company_id); + } else { + return $query->join('users as users_comp', 'users_comp.id', 'user_id')->where('users_comp.company_id', '=', $company_id); + } + } + + /** + * I legit do not know what this method does, but we can't remove it (yet). + * + * This gets invoked by CompanyableChildScope, but I'm not sure what it does. + * + * @author [A. Gianotto] + * @param array $companyable_names + * @param $query + * @return mixed + */ + public static function scopeCompanyableChildren(array $companyable_names, $query) + { + + if (count($companyable_names) == 0) { + throw new Exception('No Companyable Children to scope'); + } elseif (! static::isFullMultipleCompanySupportEnabled() || (Auth::check() && Auth::user()->isSuperUser())) { + return $query; + } else { + $f = function ($q) { + \Log::debug('scopeCompanyablesDirectly firing '); + static::scopeCompanyablesDirectly($q); + }; + + $q = $query->where(function ($q) use ($companyable_names, $f) { + $q2 = $q->whereHas($companyable_names[0], $f); + + for ($i = 1; $i < count($companyable_names); $i++) { + $q2 = $q2->orWhereHas($companyable_names[$i], $f); + } + }); + + return $q; + } + } + } diff --git a/app/Models/CompanyableTrait.php b/app/Models/CompanyableTrait.php index b03b346d2e..df67f2be4f 100644 --- a/app/Models/CompanyableTrait.php +++ b/app/Models/CompanyableTrait.php @@ -5,8 +5,13 @@ namespace App\Models; trait CompanyableTrait { /** - * Boot the companyable trait for a model. + * This trait is used to scope models to the current company. To use this scope on companyable models, + * we use the "use Companyable;" statement at the top of the mode. * + * We CANNOT USE THIS ON USERS, as it causes an infinite loop and prevents users from logging in, since this scope will be + * applied to the currently logged in (or logging in) user in addition to the user model for viewing lists of users. + * + * @see \App\Models\Company\Company::scopeCompanyables() * @return void */ public static function bootCompanyableTrait() diff --git a/app/Models/CustomFieldset.php b/app/Models/CustomFieldset.php index a62f96d631..71be28e8a3 100644 --- a/app/Models/CustomFieldset.php +++ b/app/Models/CustomFieldset.php @@ -5,6 +5,8 @@ namespace App\Models; use Gate; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Log; +use Illuminate\Validation\Rule; use Watson\Validating\ValidatingTrait; class CustomFieldset extends Model @@ -92,8 +94,19 @@ class CustomFieldset extends Model array_push($rule, $field->attributes['format']); $rules[$field->db_column_name()] = $rule; - //add not_array to rules for all fields - $rules[$field->db_column_name()][] = 'not_array'; + + // add not_array to rules for all fields but checkboxes + if ($field->element != 'checkbox') { + $rules[$field->db_column_name()][] = 'not_array'; + } + + if ($field->element == 'checkbox') { + $rules[$field->db_column_name()][] = 'checkboxes'; + } + + if ($field->element == 'radio') { + $rules[$field->db_column_name()][] = 'radio_buttons'; + } } return $rules; diff --git a/app/Models/Labels/FieldOption.php b/app/Models/Labels/FieldOption.php index 7e45cc0ce7..38a90e31dc 100644 --- a/app/Models/Labels/FieldOption.php +++ b/app/Models/Labels/FieldOption.php @@ -18,8 +18,14 @@ class FieldOption { // assignedTo directly on the asset is a special case where // we want to avoid returning the property directly // and instead return the entity's presented name. - if ($dataPath[0] === 'assignedTo'){ - return $asset->assignedTo ? $asset->assignedTo->present()->fullName() : null; + if ($dataPath[0] === 'assignedTo') { + if ($asset->relationLoaded('assignedTo')) { + // If the "assignedTo" relationship was eager loaded then the way to get the + // relationship changes from $asset->assignedTo to $asset->assigned. + return $asset->assigned ? $asset->assigned->present()->fullName() : null; + } + + return $asset->assignedTo ? $asset->assignedTo->present()->fullName() : null; } return $dataPath->reduce(function ($myValue, $path) { diff --git a/app/Models/Labels/Tapes/Brother/TZe_18mm.php b/app/Models/Labels/Tapes/Brother/TZe_18mm.php new file mode 100644 index 0000000000..38c14c7aa4 --- /dev/null +++ b/app/Models/Labels/Tapes/Brother/TZe_18mm.php @@ -0,0 +1,19 @@ +getUnit()); } + public function getMarginTop() { return Helper::convertUnit(self::MARGIN_SIDES, 'mm', $this->getUnit()); } + public function getMarginBottom() { return Helper::convertUnit(self::MARGIN_SIDES, 'mm', $this->getUnit());} + public function getMarginLeft() { return Helper::convertUnit(self::MARGIN_ENDS, 'mm', $this->getUnit()); } + public function getMarginRight() { return Helper::convertUnit(self::MARGIN_ENDS, 'mm', $this->getUnit()); } +} \ No newline at end of file diff --git a/app/Models/Labels/Tapes/Brother/TZe_18mm_A.php b/app/Models/Labels/Tapes/Brother/TZe_18mm_A.php new file mode 100644 index 0000000000..32156f5ee6 --- /dev/null +++ b/app/Models/Labels/Tapes/Brother/TZe_18mm_A.php @@ -0,0 +1,56 @@ +getPrintableArea(); + + if ($record->has('barcode1d')) { + static::write1DBarcode( + $pdf, $record->get('barcode1d')->content, $record->get('barcode1d')->type, + $pa->x1, $pa->y1, $pa->w, self::BARCODE_SIZE + ); + } + + $currentY = $pa->y1 + self::BARCODE_SIZE + self::BARCODE_MARGIN; + $usableHeight = $pa->h - self::BARCODE_SIZE - self::BARCODE_MARGIN; + $fontSize = $usableHeight + self::TEXT_SIZE_MOD; + + $tagWidth = $pa->w / 3; + $fieldWidth = $pa->w / 3 * 2; + + static::writeText( + $pdf, $record->get('tag'), + $pa->x1, $currentY, + 'freemono', 'b', $fontSize, 'L', + $tagWidth, $usableHeight, true, 0, 0 + ); + + if ($record->get('fields')->count() >= 1) { + static::writeText( + $pdf, $record->get('fields')->values()->get(0)['value'], + $pa->x1 + ($tagWidth), $currentY, + 'freemono', 'b', $fontSize, 'R', + $fieldWidth, $usableHeight, true, 0, 0 + ); + } + + } +} \ No newline at end of file diff --git a/app/Models/Labels/Tapes/Dymo/LabelWriter_1933081.php b/app/Models/Labels/Tapes/Dymo/LabelWriter_1933081.php new file mode 100644 index 0000000000..9b56012f7a --- /dev/null +++ b/app/Models/Labels/Tapes/Dymo/LabelWriter_1933081.php @@ -0,0 +1,89 @@ +getPrintableArea(); + + $currentX = $pa->x1; + $currentY = $pa->y1; + $usableWidth = $pa->w; + + $barcodeSize = $pa->h - self::TAG_SIZE; + + if ($record->has('barcode2d')) { + static::writeText( + $pdf, $record->get('tag'), + $pa->x1, $pa->y2 - self::TAG_SIZE, + 'freesans', 'b', self::TAG_SIZE, 'C', + $barcodeSize, self::TAG_SIZE, true, 0 + ); + static::write2DBarcode( + $pdf, $record->get('barcode2d')->content, $record->get('barcode2d')->type, + $currentX, $currentY, + $barcodeSize, $barcodeSize + ); + $currentX += $barcodeSize + self::BARCODE_MARGIN; + $usableWidth -= $barcodeSize + self::BARCODE_MARGIN; + } else { + static::writeText( + $pdf, $record->get('tag'), + $pa->x1, $pa->y2 - self::TAG_SIZE, + 'freesans', 'b', self::TAG_SIZE, 'R', + $usableWidth, self::TAG_SIZE, true, 0 + ); + } + + if ($record->has('title')) { + static::writeText( + $pdf, $record->get('title'), + $currentX, $currentY, + 'freesans', 'b', self::TITLE_SIZE, 'L', + $usableWidth, self::TITLE_SIZE, true, 0 + ); + $currentY += self::TITLE_SIZE + self::TITLE_MARGIN; + } + + foreach ($record->get('fields') as $field) { + static::writeText( + $pdf, (($field['label']) ? $field['label'].' ' : '') . $field['value'], + $currentX, $currentY, + 'freesans', '', self::FIELD_SIZE, 'L', + $usableWidth, self::FIELD_SIZE, true, 0, 0.3 + ); + $currentY += self::FIELD_SIZE + self::FIELD_MARGIN; + } + + if ($record->has('barcode1d')) { + static::write1DBarcode( + $pdf, $record->get('barcode1d')->content, $record->get('barcode1d')->type, + $currentX, $barcodeSize + self::BARCODE_MARGIN, $usableWidth - self::TAG_SIZE, self::TAG_SIZE + ); + } + } + +} diff --git a/app/Models/Labels/Tapes/Dymo/LabelWriter_2112283.php b/app/Models/Labels/Tapes/Dymo/LabelWriter_2112283.php new file mode 100644 index 0000000000..e1305bd068 --- /dev/null +++ b/app/Models/Labels/Tapes/Dymo/LabelWriter_2112283.php @@ -0,0 +1,89 @@ +getPrintableArea(); + + $currentX = $pa->x1; + $currentY = $pa->y1; + $usableWidth = $pa->w; + + $barcodeSize = $pa->h - self::TAG_SIZE; + + if ($record->has('barcode2d')) { + static::writeText( + $pdf, $record->get('tag'), + $pa->x1, $pa->y2 - self::TAG_SIZE, + 'freesans', 'b', self::TAG_SIZE, 'C', + $barcodeSize, self::TAG_SIZE, true, 0 + ); + static::write2DBarcode( + $pdf, $record->get('barcode2d')->content, $record->get('barcode2d')->type, + $currentX, $currentY, + $barcodeSize, $barcodeSize + ); + $currentX += $barcodeSize + self::BARCODE_MARGIN; + $usableWidth -= $barcodeSize + self::BARCODE_MARGIN; + } else { + static::writeText( + $pdf, $record->get('tag'), + $pa->x1, $pa->y2 - self::TAG_SIZE, + 'freesans', 'b', self::TAG_SIZE, 'R', + $usableWidth, self::TAG_SIZE, true, 0 + ); + } + + if ($record->has('title')) { + static::writeText( + $pdf, $record->get('title'), + $currentX, $currentY, + 'freesans', 'b', self::TITLE_SIZE, 'L', + $usableWidth, self::TITLE_SIZE, true, 0 + ); + $currentY += self::TITLE_SIZE + self::TITLE_MARGIN; + } + + foreach ($record->get('fields') as $field) { + static::writeText( + $pdf, (($field['label']) ? $field['label'].' ' : '') . $field['value'], + $currentX, $currentY, + 'freesans', '', self::FIELD_SIZE, 'L', + $usableWidth, self::FIELD_SIZE, true, 0, 0.3 + ); + $currentY += self::FIELD_SIZE + self::FIELD_MARGIN; + } + + if ($record->has('barcode1d')) { + static::write1DBarcode( + $pdf, $record->get('barcode1d')->content, $record->get('barcode1d')->type, + $currentX, $barcodeSize + self::BARCODE_MARGIN, $usableWidth - self::TAG_SIZE, self::TAG_SIZE + ); + } + } + +} diff --git a/app/Models/License.php b/app/Models/License.php index 7fb4f9e4cb..deb1221e73 100755 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -81,6 +81,7 @@ class License extends Depreciable 'serial', 'supplier_id', 'termination_date', + 'free_seat_count', 'user_id', 'min_amt', ]; @@ -114,6 +115,7 @@ class License extends Depreciable 'category' => ['name'], 'depreciation' => ['name'], ]; + protected $appends = ['free_seat_count']; /** * Update seat counts when the license is updated @@ -280,6 +282,16 @@ class License extends Depreciable } $this->attributes['termination_date'] = $value; } + /** + * Sets free_seat_count attribute + * + * @author G. Martinez + * @since [v6.3] + * @return mixed + */ + public function getFreeSeatCountAttribute(){ + return $this->attributes['free_seat_count'] = $this->remaincount(); + } /** * Establishes the license -> company relationship @@ -502,7 +514,13 @@ class License extends Depreciable ->whereNull('deleted_at') ->count(); } - + /** + * Returns the available seats remaining + * + * @author A. Gianotto + * @since [v2.0] + * @return int + */ /** * Returns the number of total available seats for this license @@ -579,7 +597,7 @@ class License extends Depreciable $taken = $this->assigned_seats_count; $diff = ($total - $taken); - return $diff; + return (int) $diff; } /** diff --git a/app/Models/User.php b/app/Models/User.php index e535fa0fde..e30136703e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -214,10 +214,12 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo public function isDeletable() { return Gate::allows('delete', $this) - && ($this->assets()->count() === 0) - && ($this->licenses()->count() === 0) - && ($this->consumables()->count() === 0) - && ($this->accessories()->count() === 0) + && ($this->assets->count() === 0) + && ($this->licenses->count() === 0) + && ($this->consumables->count() === 0) + && ($this->accessories->count() === 0) + && ($this->managedLocations->count() === 0) + && ($this->managesUsers->count() === 0) && ($this->deleted_at == ''); } @@ -410,6 +412,19 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo return $this->belongsTo(self::class, 'manager_id')->withTrashed(); } + /** + * Establishes the user -> managed users relationship + * + * @author A. Gianotto + * @since [v6.4.1] + * @return \Illuminate\Database\Eloquent\Relations\Relation + */ + public function managesUsers() + { + return $this->hasMany(\App\Models\User::class, 'manager_id'); + } + + /** * Establishes the user -> managed locations relationship * diff --git a/app/Policies/SnipePermissionsPolicy.php b/app/Policies/SnipePermissionsPolicy.php index d4f2d88ccd..96c94cd776 100644 --- a/app/Policies/SnipePermissionsPolicy.php +++ b/app/Policies/SnipePermissionsPolicy.php @@ -35,16 +35,50 @@ abstract class SnipePermissionsPolicy public function before(User $user, $ability, $item) { - // Lets move all company related checks here. - if ($item instanceof \App\Models\SnipeModel && ! Company::isCurrentUserHasAccess($item)) { - return false; - } - // If an admin, they can do all asset related tasks. + /** + * If an admin, they can do all item related tasks, but ARE constrained by FMCSA company access. + * That scoping happens on the model level (except for the Users model) via the Companyable trait. + * + * This does lead to some inconsistencies in the responses, since attempting to edit assets, + * accessories, etc (anything other than users) will result in a Forbidden error, whereas the users + * area will redirect with "That user doesn't exist" since the scoping is handled directly on those queries. + * + * The *superuser* global permission gets handled in the AuthServiceProvider before() method. + * + * @see https://snipe-it.readme.io/docs/permissions + */ + if ($user->hasAccess('admin')) { return true; } + + /** + * If we got here by $this→authorize('something', $actualModel) then we can continue on Il but if we got here + * via $this→authorize('something', Model::class) then calling Company:: isCurrentUserHasAccess($item) gets weird. + * Bail out here by returning "nothing" and allow the relevant method lower in this class to be called and handle authorization. + */ + if (!$item instanceof Model){ + return; + } + + + /** + * The Company::isCurrentUserHasAccess() method from the company model handles the check for FMCS already so we + * don't have to do that here. + */ + if (!Company::isCurrentUserHasAccess($item)) { + return false; + } + } + + /** + * These methods handle the generic view/create/edit/delete permissions for the model. + * + * @param User $user + * @return bool + */ public function index(User $user) { return $user->hasAccess($this->columnName().'.view'); diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php index 5f900a6a83..163ee1b606 100644 --- a/app/Presenters/AssetPresenter.php +++ b/app/Presenters/AssetPresenter.php @@ -253,6 +253,13 @@ class AssetPresenter extends Presenter 'visible' => false, 'title' => trans('admin/hardware/table.checkout_date'), 'formatter' => 'dateDisplayFormatter', + ], [ + 'field' => 'last_checkin', + 'searchable' => false, + 'sortable' => true, + 'visible' => false, + 'title' => trans('admin/hardware/table.last_checkin_date'), + 'formatter' => 'dateDisplayFormatter', ], [ 'field' => 'expected_checkin', 'searchable' => false, diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index 4726205c72..a5b99adb14 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -221,7 +221,7 @@ class UserPresenter extends Presenter 'switchable' => true, 'escape' => true, 'class' => 'css-barcode', - 'title' => 'Assets', + 'title' => trans('general.assets'), 'visible' => true, ], [ @@ -230,7 +230,7 @@ class UserPresenter extends Presenter 'sortable' => true, 'switchable' => true, 'class' => 'css-license', - 'title' => 'License', + 'title' => trans('general.licenses'), 'visible' => true, ], [ @@ -239,7 +239,7 @@ class UserPresenter extends Presenter 'sortable' => true, 'switchable' => true, 'class' => 'css-consumable', - 'title' => 'Consumables', + 'title' => trans('general.consumables'), 'visible' => true, ], [ @@ -248,7 +248,25 @@ class UserPresenter extends Presenter 'sortable' => true, 'switchable' => true, 'class' => 'css-accessory', - 'title' => 'Accessories', + 'title' => trans('general.accessories'), + 'visible' => true, + ], + [ + 'field' => 'manages_users_count', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'class' => 'css-users', + 'title' => trans('admin/users/table.managed_users'), + 'visible' => true, + ], + [ + 'field' => 'manages_locations_count', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'class' => 'css-location', + 'title' => trans('admin/users/table.managed_locations'), 'visible' => true, ], [ diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 9d493e85bb..11a5d3c1ba 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -93,21 +93,28 @@ class AuthServiceProvider extends ServiceProvider Passport::personalAccessTokensExpireIn(Carbon::now()->addYears(config('passport.expiration_years'))); Passport::withCookieSerialization(); - // -------------------------------- - // BEFORE ANYTHING ELSE - // -------------------------------- - // If this condition is true, ANYTHING else below will be assumed - // to be true. This can cause weird blade behavior. + + /** + * BEFORE ANYTHING ELSE + * + * If this condition is true, ANYTHING else below will be assumed to be true. + * This is where we set the superadmin permission to allow superadmins to be able to do everything within the system. + * + */ Gate::before(function ($user) { if ($user->isSuperUser()) { return true; } }); - // -------------------------------- - // GENERAL GATES - // These control general sections of the admin - // -------------------------------- + + /** + * GENERAL GATES + * + * These control general sections of the admin. These definitions are used in our blades via @can('blah) and also + * use in our controllers to determine if a user has access to a certain area. + */ + Gate::define('admin', function ($user) { if ($user->hasAccess('admin')) { return true; diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 50468c8d72..4646b3c78b 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -2,9 +2,12 @@ namespace App\Providers; +use App\Models\CustomField; use App\Models\Department; use App\Models\Setting; use DB; +use Illuminate\Support\Facades\Crypt; +use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; use Illuminate\Validation\Rule; use Validator; @@ -276,7 +279,24 @@ class ValidationServiceProvider extends ServiceProvider Validator::extend('is_unique_department', function ($attribute, $value, $parameters, $validator) { $data = $validator->getData(); - if ((array_key_exists('location_id', $data) && $data['location_id'] != null) && (array_key_exists('company_id', $data) && $data['company_id'] != null)) { + + if ( + array_key_exists('location_id', $data) && $data['location_id'] !== null && + array_key_exists('company_id', $data) && $data['company_id'] !== null + ) { + //for updating existing departments + if(array_key_exists('id', $data) && $data['id'] !== null){ + $count = Department::where('name', $data['name']) + ->where('location_id', $data['location_id']) + ->where('company_id', $data['company_id']) + ->whereNotNull('company_id') + ->whereNotNull('location_id') + ->where('id', '!=', $data['id']) + ->count('name'); + + return $count < 1; + }else // for entering in new departments + { $count = Department::where('name', $data['name']) ->where('location_id', $data['location_id']) ->where('company_id', $data['company_id']) @@ -286,14 +306,48 @@ class ValidationServiceProvider extends ServiceProvider return $count < 1; } + } else { return true; - } + } }); Validator::extend('not_array', function ($attribute, $value, $parameters, $validator) { return !is_array($value); }); + + // This is only used in Models/CustomFieldset.php - it does automatic validation for checkboxes by making sure + // that the submitted values actually exist in the options. + Validator::extend('checkboxes', function ($attribute, $value, $parameters, $validator){ + $field = CustomField::where('db_column', $attribute)->first(); + $options = $field->formatFieldValuesAsArray(); + + if(is_array($value)) { + $invalid = array_diff($value, $options); + if(count($invalid) > 0) { + return false; + } + } + + // for legacy, allows users to submit a comma separated string of options + elseif(!is_array($value)) { + $exploded = array_map('trim', explode(',', $value)); + $invalid = array_diff($exploded, $options); + if(count($invalid) > 0) { + return false; + } + } + + return true; + }); + + // Validates that a radio button option exists + Validator::extend('radio_buttons', function ($attribute, $value) { + $field = CustomField::where('db_column', $attribute)->first(); + $options = $field->formatFieldValuesAsArray(); + + return in_array($value, $options); + }); } /** diff --git a/app/View/Label.php b/app/View/Label.php index f47ad6acd5..3ec3a4099c 100644 --- a/app/View/Label.php +++ b/app/View/Label.php @@ -142,7 +142,32 @@ class Label implements View // Remove Duplicates $toAdd = $field ->filter(fn($o) => !$myFields->contains('dataSource', $o['dataSource'])) - ->first(); + // For fields that have multiple options, we need to combine them + // into a single field so all values are displayed. + ->reduce(function ($previous, $current) { + // On the first iteration we simply return the item. + // If there is only one item to be processed for the row + // then this effectively skips everything below this if block. + if (is_null($previous)) { + return $current; + } + + // At this point we are dealing with a row with multiple items being displayed. + // We need to combine the label and value of the current item with the previous item. + + // The end result of this will be in this format: + // {labelOne} {valueOne} | {labelTwo} {valueTwo} | {labelThree} {valueThree} + $previous['value'] = trim(implode(' | ', [ + implode(' ', [$previous['label'], $previous['value']]), + implode(' ', [$current['label'], $current['value']]), + ])); + + // We'll set the label to an empty string since we + // injected the label into the value field above. + $previous['label'] = ''; + + return $previous; + }); return $toAdd ? $myFields->push($toAdd) : $myFields; }, new Collection()); diff --git a/composer.lock b/composer.lock index 127254236b..4f5a0df23b 100644 --- a/composer.lock +++ b/composer.lock @@ -10983,20 +10983,20 @@ }, { "name": "tecnickcom/tcpdf", - "version": "6.6.2", + "version": "6.7.5", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "e3cffc9bcbc76e89e167e9eb0bbda0cab7518459" + "reference": "951eabf0338ec2522bd0d5d9c79b08a3a3d36b36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/e3cffc9bcbc76e89e167e9eb0bbda0cab7518459", - "reference": "e3cffc9bcbc76e89e167e9eb0bbda0cab7518459", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/951eabf0338ec2522bd0d5d9c79b08a3a3d36b36", + "reference": "951eabf0338ec2522bd0d5d9c79b08a3a3d36b36", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.5.0" }, "type": "library", "autoload": { @@ -11021,7 +11021,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-only" + "LGPL-3.0-or-later" ], "authors": [ { @@ -11043,7 +11043,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF/tree/6.6.2" + "source": "https://github.com/tecnickcom/TCPDF/tree/6.7.5" }, "funding": [ { @@ -11051,7 +11051,7 @@ "type": "custom" } ], - "time": "2022-12-17T10:28:59+00:00" + "time": "2024-04-20T17:25:10+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", diff --git a/config/database.php b/config/database.php index 1b4feeca93..de3c40bb25 100755 --- a/config/database.php +++ b/config/database.php @@ -96,6 +96,7 @@ return [ PDO::MYSQL_ATTR_SSL_CERT => env('DB_SSL_CERT_PATH'), // /path/to/cert.pem PDO::MYSQL_ATTR_SSL_CA => env('DB_SSL_CA_PATH'), // /path/to/ca.pem PDO::MYSQL_ATTR_SSL_CIPHER => env('DB_SSL_CIPHER'), + PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => env('DB_SSL_VERIFY_SERVER'), //true/false ]) : [], ], diff --git a/config/session.php b/config/session.php index a47294a8cb..5c6cb27a9f 100644 --- a/config/session.php +++ b/config/session.php @@ -174,4 +174,17 @@ return [ 'bs_table_storage' => env('BS_TABLE_STORAGE', 'cookieStorage'), + + /* + |-------------------------------------------------------------------------- + | Bootstrap Table Enable Deeplinking + |-------------------------------------------------------------------------- + | + | Use deeplinks to directly link to search results, sorting, and pagination + | + | More info: https://github.com/generals-space/bootstrap-table-addrbar/blob/master/readme(EN).md + */ + + 'bs_table_addrbar' => env('BS_TABLE_DEEPLINK', true), + ]; diff --git a/config/version.php b/config/version.php index a1d26453da..421e5fcb20 100644 --- a/config/version.php +++ b/config/version.php @@ -1,10 +1,10 @@ 'v6.3.3', - 'full_app_version' => 'v6.3.3 - build 12903-g0f63fa23e', - 'build_version' => '12903', + 'app_version' => 'v6.4.1', + 'full_app_version' => 'v6.4.1 - build 13386-g4642f50d6b', + 'build_version' => '13386', 'prerelease_version' => '', - 'hash_version' => 'g0f63fa23e', - 'full_hash' => 'v6.3.3-67-g0f63fa23e', + 'hash_version' => 'g4642f50d6b', + 'full_hash' => 'v6.4.1-31-g4642f50d6b', 'branch' => 'develop', ); \ No newline at end of file diff --git a/database/factories/AssetFactory.php b/database/factories/AssetFactory.php index 5461303c88..6c5e883636 100644 --- a/database/factories/AssetFactory.php +++ b/database/factories/AssetFactory.php @@ -4,6 +4,7 @@ namespace Database\Factories; use App\Models\Asset; use App\Models\AssetModel; +use App\Models\CustomField; use App\Models\Location; use App\Models\Statuslabel; use App\Models\Supplier; @@ -353,6 +354,16 @@ class AssetFactory extends Factory return $this->state(['requestable' => false]); } + public function hasEncryptedCustomField(CustomField $field = null) + { + return $this->state(function () use ($field) { + return [ + 'model_id' => AssetModel::factory()->hasEncryptedCustomField($field), + ]; + }); + } + + /** * This allows bypassing model level validation if you want to purposefully * create an asset in an invalid state. Validation is turned back on diff --git a/database/factories/AssetModelFactory.php b/database/factories/AssetModelFactory.php index 4881d6560b..ed3d478261 100644 --- a/database/factories/AssetModelFactory.php +++ b/database/factories/AssetModelFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use App\Models\AssetModel; +use App\Models\CustomField; use App\Models\CustomFieldset; use App\Models\Depreciation; use App\Models\Manufacturer; @@ -429,4 +430,13 @@ class AssetModelFactory extends Factory ]; }); } + + public function hasEncryptedCustomField(CustomField $field = null) + { + return $this->state(function () use ($field) { + return [ + 'fieldset_id' => CustomFieldset::factory()->hasEncryptedCustomField($field), + ]; + }); + } } diff --git a/database/factories/CustomFieldsetFactory.php b/database/factories/CustomFieldsetFactory.php index e651b5c8d3..9a410ba25f 100644 --- a/database/factories/CustomFieldsetFactory.php +++ b/database/factories/CustomFieldsetFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use App\Models\CustomFieldset; +use App\Models\CustomField; use Illuminate\Database\Eloquent\Factories\Factory; class CustomFieldsetFactory extends Factory @@ -43,4 +44,13 @@ class CustomFieldsetFactory extends Factory ]; }); } + + public function hasEncryptedCustomField(CustomField $field = null) + { + return $this->afterCreating(function (CustomFieldset $fieldset) use ($field) { + $field = $field ?? CustomField::factory()->testEncrypted()->create(); + + $fieldset->fields()->attach($field, ['order' => '1', 'required' => false]); + }); + } } diff --git a/database/migrations/2024_03_18_221612_update_legacy_locale.php b/database/migrations/2024_03_18_221612_update_legacy_locale.php new file mode 100644 index 0000000000..dc81207b1d --- /dev/null +++ b/database/migrations/2024_03_18_221612_update_legacy_locale.php @@ -0,0 +1,47 @@ +string('locale', 10)->nullable()->default('en-US')->change(); + }); + + Schema::table('settings', function (Blueprint $table) { + // + $table->string('locale', 10)->nullable()->default('en-US')->change(); + }); + + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + Schema::table('users', function (Blueprint $table) { + // + $table->string('locale', 10)->nullable()->default(config('app.locale'))->change(); + }); + Schema::table('settings', function (Blueprint $table) { + // + $table->string('locale', 10)->nullable()->default(config('app.locale'))->change(); + }); + } +} diff --git a/package-lock.json b/package-lock.json index 3a81578e6a..1a61476f90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1329,9 +1329,9 @@ "dev": true }, "@fortawesome/fontawesome-free": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz", - "integrity": "sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz", + "integrity": "sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q==" }, "@jridgewell/gen-mapping": { "version": "0.1.1", @@ -1460,9 +1460,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" } } }, @@ -1752,9 +1752,9 @@ "dev": true }, "@types/raf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz", - "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", "optional": true }, "@types/range-parser": { @@ -2424,12 +2424,48 @@ } }, "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "dependencies": { + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } } }, "array-filter": { @@ -3781,9 +3817,9 @@ }, "dependencies": { "core-js": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.0.tgz", - "integrity": "sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", + "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==", "optional": true }, "regenerator-runtime": { @@ -4373,9 +4409,9 @@ } }, "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "css-declaration-sorter": { "version": "6.3.0", @@ -4607,14 +4643,14 @@ } }, "deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "requires": { "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -4624,36 +4660,58 @@ "object-is": "^1.1.5", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", + "regexp.prototype.flags": "^1.5.1", "side-channel": "^1.0.4", "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" }, "dependencies": { "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } }, "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "has-symbols": { @@ -4693,26 +4751,26 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" } } } @@ -4731,6 +4789,16 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -4902,9 +4970,9 @@ } }, "dompurify": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", - "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.2.tgz", + "integrity": "sha512-5vSyvxRAb45EoWwAktUT3AYqAwXK4FL7si22Cgj46U6ICsj/YJczCN+Bk7WNABIQmpWRymGfslMhrRUZkQNnqA==", "optional": true }, "domutils": { @@ -5071,6 +5139,43 @@ "string.prototype.trimstart": "^1.0.3" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -5087,15 +5192,21 @@ "stop-iteration-iterator": "^1.0.0" }, "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "has-symbols": { @@ -15154,15 +15265,21 @@ "get-intrinsic": "^1.1.3" }, "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "has-symbols": { @@ -15236,17 +15353,17 @@ "dev": true }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" }, "has-symbols": { "version": "1.0.1", @@ -15254,11 +15371,11 @@ "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "dependencies": { "has-symbols": { @@ -15318,6 +15435,21 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + } + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -15813,31 +15945,13 @@ } }, "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" - }, - "dependencies": { - "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - } } }, "interpret": { @@ -15880,55 +15994,35 @@ } }, "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" }, "dependencies": { - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "requires": { - "which-typed-array": "^1.1.11" - } - }, - "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } } } }, @@ -16018,9 +16112,9 @@ } }, "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" }, "is-negative-zero": { "version": "2.0.1", @@ -16065,16 +16159,52 @@ } }, "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "dependencies": { + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } } }, "is-stream": { @@ -16112,17 +16242,53 @@ } }, "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" }, "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "dependencies": { + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } } }, "is-what": { @@ -16366,9 +16532,9 @@ }, "dependencies": { "core-js": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.0.tgz", - "integrity": "sha512-rd4rYZNlF3WuoYuRIDEmbR/ga9CeuWX9U05umAvgrrZoHY4Z++cp/xwPQMvUpBB4Ag6J8KfD80G0zwCyaSxDww==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.37.0.tgz", + "integrity": "sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==", "optional": true } } @@ -17500,12 +17666,58 @@ "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" }, "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "dependencies": { + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } } }, "object-keys": { @@ -17853,6 +18065,11 @@ "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, "postcss": { "version": "8.4.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", @@ -18695,23 +18912,59 @@ } }, "regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "dependencies": { - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" } } }, @@ -19077,6 +19330,54 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "dependencies": { + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + } + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -19162,6 +19463,11 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "signature_pad": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/signature_pad/-/signature_pad-4.2.0.tgz", + "integrity": "sha512-YLWysmaUBaC5wosAKkgbX7XI+LBv2w5L0QUcI6Jc4moHYzv9BUBJtAyNLpWzHjtjKTeWOH6bfP4a4pzf0UinfQ==" + }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -19328,9 +19634,9 @@ "dev": true }, "stackblur-canvas": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz", - "integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", "optional": true }, "statuses": { @@ -19623,9 +19929,9 @@ } }, "tableexport.jquery.plugin": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/tableexport.jquery.plugin/-/tableexport.jquery.plugin-1.28.0.tgz", - "integrity": "sha512-ydDjOhw8A+LOu+801zPXDeMF8MoU1q2HtS2msphCuny0tdXgbXG9GJfA4ll1hBs0ABiAnOaVVZaRuxBmW/qHtw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/tableexport.jquery.plugin/-/tableexport.jquery.plugin-1.30.0.tgz", + "integrity": "sha512-kMztiFUsGbxsknFVCDph+5j4e9xmqBBV6Na7T9vRYCUGDxtlndrdxMs9qLJDSOXjlgkIqCUv+S/e5iTUNAFF/g==", "requires": { "file-saver": ">=2.0.4", "html2canvas": ">=1.0.0", @@ -20602,14 +20908,14 @@ } }, "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" } }, "which-module": { diff --git a/package.json b/package.json index f02b78db0b..0526d5370b 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "vue-template-compiler": "2.4.4" }, "dependencies": { - "@fortawesome/fontawesome-free": "^6.5.0", + "@fortawesome/fontawesome-free": "^6.5.2", "acorn": "^8.11.2", "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", "ajv": "^6.12.6", - "alpinejs": "^3.13.5", + "alpinejs": "3.13.5", "blueimp-file-upload": "^9.34.0", "bootstrap": "^3.4.1", "bootstrap-colorpicker": "^2.5.3", @@ -56,7 +56,8 @@ "papaparse": "^4.3.3", "select2": "4.0.13", "sheetjs": "^2.0.0", - "tableexport.jquery.plugin": "1.28.0", + "signature_pad": "^4.2.0", + "tableexport.jquery.plugin": "1.30.0", "tether": "^1.4.0", "vue-resource": "^1.5.2", "webpack": "^5.90.2" diff --git a/public/css/build/app.css b/public/css/build/app.css index f6e9fd6804..e48198e10f 100644 Binary files a/public/css/build/app.css and b/public/css/build/app.css differ diff --git a/public/css/build/overrides.css b/public/css/build/overrides.css index f32d3051dd..402329d6f1 100644 Binary files a/public/css/build/overrides.css and b/public/css/build/overrides.css differ diff --git a/public/css/dist/all.css b/public/css/dist/all.css index 9d7cd1b408..a8bd7025d6 100644 Binary files a/public/css/dist/all.css and b/public/css/dist/all.css differ diff --git a/public/css/dist/skins/skin-black-dark.css b/public/css/dist/skins/skin-black-dark.css index f12332df6d..bff2a825db 100644 Binary files a/public/css/dist/skins/skin-black-dark.css and b/public/css/dist/skins/skin-black-dark.css differ diff --git a/public/css/dist/skins/skin-black-dark.min.css b/public/css/dist/skins/skin-black-dark.min.css index f12332df6d..bff2a825db 100644 Binary files a/public/css/dist/skins/skin-black-dark.min.css and b/public/css/dist/skins/skin-black-dark.min.css differ diff --git a/public/css/dist/skins/skin-blue-dark.css b/public/css/dist/skins/skin-blue-dark.css index c4f2672931..eca722dac4 100644 Binary files a/public/css/dist/skins/skin-blue-dark.css and b/public/css/dist/skins/skin-blue-dark.css differ diff --git a/public/css/dist/skins/skin-blue-dark.min.css b/public/css/dist/skins/skin-blue-dark.min.css index c4f2672931..eca722dac4 100644 Binary files a/public/css/dist/skins/skin-blue-dark.min.css and b/public/css/dist/skins/skin-blue-dark.min.css differ diff --git a/public/css/dist/skins/skin-green-dark.css b/public/css/dist/skins/skin-green-dark.css index e024040c4e..7681a2021e 100644 Binary files a/public/css/dist/skins/skin-green-dark.css and b/public/css/dist/skins/skin-green-dark.css differ diff --git a/public/css/dist/skins/skin-green-dark.min.css b/public/css/dist/skins/skin-green-dark.min.css index e024040c4e..7681a2021e 100644 Binary files a/public/css/dist/skins/skin-green-dark.min.css and b/public/css/dist/skins/skin-green-dark.min.css differ diff --git a/public/css/dist/skins/skin-orange-dark.css b/public/css/dist/skins/skin-orange-dark.css index 1ec2c0701a..40b1ae0b66 100644 Binary files a/public/css/dist/skins/skin-orange-dark.css and b/public/css/dist/skins/skin-orange-dark.css differ diff --git a/public/css/dist/skins/skin-orange-dark.min.css b/public/css/dist/skins/skin-orange-dark.min.css index 1ec2c0701a..40b1ae0b66 100644 Binary files a/public/css/dist/skins/skin-orange-dark.min.css and b/public/css/dist/skins/skin-orange-dark.min.css differ diff --git a/public/css/dist/skins/skin-purple-dark.css b/public/css/dist/skins/skin-purple-dark.css index cec9819d7d..60753281a8 100644 Binary files a/public/css/dist/skins/skin-purple-dark.css and b/public/css/dist/skins/skin-purple-dark.css differ diff --git a/public/css/dist/skins/skin-purple-dark.min.css b/public/css/dist/skins/skin-purple-dark.min.css index cec9819d7d..60753281a8 100644 Binary files a/public/css/dist/skins/skin-purple-dark.min.css and b/public/css/dist/skins/skin-purple-dark.min.css differ diff --git a/public/css/dist/skins/skin-red-dark.css b/public/css/dist/skins/skin-red-dark.css index 17d495cbbb..56fd0897e8 100644 Binary files a/public/css/dist/skins/skin-red-dark.css and b/public/css/dist/skins/skin-red-dark.css differ diff --git a/public/css/dist/skins/skin-red-dark.min.css b/public/css/dist/skins/skin-red-dark.min.css index 17d495cbbb..56fd0897e8 100644 Binary files a/public/css/dist/skins/skin-red-dark.min.css and b/public/css/dist/skins/skin-red-dark.min.css differ diff --git a/public/css/dist/skins/skin-yellow-dark.css b/public/css/dist/skins/skin-yellow-dark.css index 09babaa6ab..c414a98ae6 100644 Binary files a/public/css/dist/skins/skin-yellow-dark.css and b/public/css/dist/skins/skin-yellow-dark.css differ diff --git a/public/css/dist/skins/skin-yellow-dark.min.css b/public/css/dist/skins/skin-yellow-dark.min.css index 09babaa6ab..c414a98ae6 100644 Binary files a/public/css/dist/skins/skin-yellow-dark.min.css and b/public/css/dist/skins/skin-yellow-dark.min.css differ diff --git a/public/css/webfonts/fa-brands-400.ttf b/public/css/webfonts/fa-brands-400.ttf index 5efb1d4f96..1fbb1f7c32 100644 Binary files a/public/css/webfonts/fa-brands-400.ttf and b/public/css/webfonts/fa-brands-400.ttf differ diff --git a/public/css/webfonts/fa-brands-400.woff2 b/public/css/webfonts/fa-brands-400.woff2 index 36fbda7d33..5d28021697 100644 Binary files a/public/css/webfonts/fa-brands-400.woff2 and b/public/css/webfonts/fa-brands-400.woff2 differ diff --git a/public/css/webfonts/fa-regular-400.ttf b/public/css/webfonts/fa-regular-400.ttf index 838b4e2cfe..549d68dc02 100644 Binary files a/public/css/webfonts/fa-regular-400.ttf and b/public/css/webfonts/fa-regular-400.ttf differ diff --git a/public/css/webfonts/fa-regular-400.woff2 b/public/css/webfonts/fa-regular-400.woff2 index b6cabbacb6..18400d7fad 100644 Binary files a/public/css/webfonts/fa-regular-400.woff2 and b/public/css/webfonts/fa-regular-400.woff2 differ diff --git a/public/css/webfonts/fa-solid-900.ttf b/public/css/webfonts/fa-solid-900.ttf index ec24749db9..bb2a869565 100644 Binary files a/public/css/webfonts/fa-solid-900.ttf and b/public/css/webfonts/fa-solid-900.ttf differ diff --git a/public/css/webfonts/fa-solid-900.woff2 b/public/css/webfonts/fa-solid-900.woff2 index 824d518eb4..758dd4f607 100644 Binary files a/public/css/webfonts/fa-solid-900.woff2 and b/public/css/webfonts/fa-solid-900.woff2 differ diff --git a/public/css/webfonts/fa-v4compatibility.ttf b/public/css/webfonts/fa-v4compatibility.ttf index b175aa8ece..8c5864c42f 100644 Binary files a/public/css/webfonts/fa-v4compatibility.ttf and b/public/css/webfonts/fa-v4compatibility.ttf differ diff --git a/public/css/webfonts/fa-v4compatibility.woff2 b/public/css/webfonts/fa-v4compatibility.woff2 index e09b5a5500..f94bec2275 100644 Binary files a/public/css/webfonts/fa-v4compatibility.woff2 and b/public/css/webfonts/fa-v4compatibility.woff2 differ diff --git a/public/js/dist/bootstrap-table.js b/public/js/dist/bootstrap-table.js index 7d45dced5d..ba97c0639f 100644 Binary files a/public/js/dist/bootstrap-table.js and b/public/js/dist/bootstrap-table.js differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 6c7fa0e60f..39d83f16ef 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,52 +1,52 @@ { "/js/build/app.js": "/js/build/app.js?id=ea5f3edebafdb29b616d23fa89106080", "/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=f677207c6cf9678eb539abecb408c374", - "/css/build/overrides.css": "/css/build/overrides.css?id=742bf17cd1ed6feaa90756beeb09d749", - "/css/build/app.css": "/css/build/app.css?id=1e755f4e7a6968ee5d46747a4ffeca47", + "/css/build/overrides.css": "/css/build/overrides.css?id=3d1aa807fc9395794b76f4cdab99c984", + "/css/build/app.css": "/css/build/app.css?id=40e80d931c21cde71b27be4c8eaaea62", "/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=dc383f8560a8d4adb51d44fb4043e03b", "/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=6f0563e726c2fe4fab4026daaa5bfdf2", - "/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=e6e53eef152bba01a4c666a4d8b01117", - "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=07273f6ca3c698a39e8fc2075af4fa07", - "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=c1f33574ecb9d3e69d9b8fe5bd68e101", + "/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=620b684d9dd9d3bb5fdda00a3a2467c3", + "/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=23f2e8df6b60e8d9816e645cc5000874", + "/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=2600828a93288ba791de9bf711171796", "/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=7b315b9612b8fde8f9c5b0ddb6bba690", - "/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=7d92dea45d94be7e1d4e427c728d335d", + "/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=e56aa0fcc7789f1efd1e14bc5e0b4159", "/css/dist/skins/skin-purple.css": "/css/dist/skins/skin-purple.css?id=6fe68325d5356197672c27bc77cedcb4", - "/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=8ca888bbc050d9680cbb65021382acba", - "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=b061bb141af3bdb6280c6ee772cf8f4f", + "/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=821b68e0a3efc3b6743453bf0ed2a954", + "/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=b31e80c39b29106d02bf9b3a0a833343", "/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=76482123f6c70e866d6b971ba91de7bb", - "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=d419cb63a12dc175d71645c876bfc2ab", + "/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=ec0a01609bec55e90f0692d86cb81625", "/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", "/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da", "/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898", - "/css/dist/all.css": "/css/dist/all.css?id=205f918653b20e1eb25f5c322b7a6832", + "/css/dist/all.css": "/css/dist/all.css?id=b51ba67a606c04c8f12fa30adcf33fd0", "/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7", "/css/dist/signature-pad.min.css": "/css/dist/signature-pad.min.css?id=6a89d3cd901305e66ced1cf5f13147f7", - "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=69e5d8e4e818f05fd882cceb758d1eba", - "/css/webfonts/fa-brands-400.woff2": "/css/webfonts/fa-brands-400.woff2?id=189b85e9c72c6f75e464c3f58a6707cf", - "/css/webfonts/fa-regular-400.ttf": "/css/webfonts/fa-regular-400.ttf?id=ed4c23399d1013809882e90bfe396d1b", - "/css/webfonts/fa-regular-400.woff2": "/css/webfonts/fa-regular-400.woff2?id=be75b1958ae0da55e1eed562d9b7713d", - "/css/webfonts/fa-solid-900.ttf": "/css/webfonts/fa-solid-900.ttf?id=dfdc7801582dd0d20ea75faa3b96c296", - "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=a0feb384c3c6071947a49708f2b0bc85", - "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=e24ec0b8661f7fa333b29444df39e399", - "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=e11465c0eff0549edd4e8ea6bbcf242f", + "/css/webfonts/fa-brands-400.ttf": "/css/webfonts/fa-brands-400.ttf?id=0141634c24336be626e05c8b77d1fa27", + "/css/webfonts/fa-brands-400.woff2": "/css/webfonts/fa-brands-400.woff2?id=b3cf7a6dd618bd392f3ddcc61343a463", + "/css/webfonts/fa-regular-400.ttf": "/css/webfonts/fa-regular-400.ttf?id=9cf69d99de9d83f82466a647f5cb1f94", + "/css/webfonts/fa-regular-400.woff2": "/css/webfonts/fa-regular-400.woff2?id=f0549181a126fe40849a53792bb0e077", + "/css/webfonts/fa-solid-900.ttf": "/css/webfonts/fa-solid-900.ttf?id=509c0e46de844df754d10179cf03c953", + "/css/webfonts/fa-solid-900.woff2": "/css/webfonts/fa-solid-900.woff2?id=96d16b1bdb177fd796c810b9e706c780", + "/css/webfonts/fa-v4compatibility.ttf": "/css/webfonts/fa-v4compatibility.ttf?id=8994b282f9f3b7a00380bb1e2731a4bf", + "/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=111e341dba724e1df946e8d1f406a7bd", "/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=99c395f0bab5966f32f63f4e55899e64", "/js/build/vendor.js": "/js/build/vendor.js?id=a2b971da417306a63385c8098acfe4af", - "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=d0eb38da8b772a21b827b7df208dc4fe", + "/js/dist/bootstrap-table.js": "/js/dist/bootstrap-table.js?id=e3bde6c62806c5ae510c964de17cd610", "/js/dist/all.js": "/js/dist/all.js?id=13bdb521e0c745d7f81dae3fb110b650", "/js/dist/all-defer.js": "/js/dist/all-defer.js?id=19ccc62a8f1ea103dede4808837384d4", "/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397", - "/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=d419cb63a12dc175d71645c876bfc2ab", + "/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=ec0a01609bec55e90f0692d86cb81625", "/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb", - "/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=b061bb141af3bdb6280c6ee772cf8f4f", + "/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=b31e80c39b29106d02bf9b3a0a833343", "/css/dist/skins/skin-blue.min.css": "/css/dist/skins/skin-blue.min.css?id=f677207c6cf9678eb539abecb408c374", - "/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=07273f6ca3c698a39e8fc2075af4fa07", + "/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=23f2e8df6b60e8d9816e645cc5000874", "/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=7b315b9612b8fde8f9c5b0ddb6bba690", - "/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=c1f33574ecb9d3e69d9b8fe5bd68e101", + "/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=2600828a93288ba791de9bf711171796", "/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=44bf834f2110504a793dadec132a5898", - "/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=8ca888bbc050d9680cbb65021382acba", + "/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=821b68e0a3efc3b6743453bf0ed2a954", "/css/dist/skins/skin-purple.min.css": "/css/dist/skins/skin-purple.min.css?id=6fe68325d5356197672c27bc77cedcb4", - "/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=7d92dea45d94be7e1d4e427c728d335d", + "/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=e56aa0fcc7789f1efd1e14bc5e0b4159", "/css/dist/skins/skin-orange.min.css": "/css/dist/skins/skin-orange.min.css?id=6f0563e726c2fe4fab4026daaa5bfdf2", - "/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=e6e53eef152bba01a4c666a4d8b01117", + "/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=620b684d9dd9d3bb5fdda00a3a2467c3", "/css/dist/skins/skin-contrast.min.css": "/css/dist/skins/skin-contrast.min.css?id=da6c7997d9de2f8329142399f0ce50da" } diff --git a/resources/assets/less/overrides.less b/resources/assets/less/overrides.less index f651826ddb..12bce00bb6 100644 --- a/resources/assets/less/overrides.less +++ b/resources/assets/less/overrides.less @@ -358,6 +358,10 @@ body { white-space: normal; } +.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading { + z-index: 0 !important; +} + @media print { a[href]:after { content: none; @@ -582,6 +586,8 @@ th.css-barcode > .th-inner, th.css-license > .th-inner, th.css-consumable > .th-inner, th.css-envelope > .th-inner, +th.css-users > .th-inner, +th.css-location > .th-inner, th.css-accessory > .th-inner { font-size: 0px; @@ -598,6 +604,8 @@ th.css-barcode > .th-inner::before, th.css-license > .th-inner::before, th.css-consumable > .th-inner::before, th.css-envelope > .th-inner::before, +th.css-users > .th-inner::before, +th.css-location > .th-inner::before, th.css-accessory > .th-inner::before { @@ -617,6 +625,7 @@ th.css-padlock > .th-inner::before } /** +BEGIN ICON TABLE HEADERS Set the font-weight css property as 900 (For Solid), 400 (Regular or Brands), 300 (Light for pro icons). **/ th.css-barcode > .th-inner::before @@ -639,12 +648,20 @@ th.css-envelope > .th-inner::before content: "\f0e0"; font-family: "Font Awesome 5 Free"; font-weight: 400; } - th.css-accessory > .th-inner::before { content: "\f11c"; font-family: "Font Awesome 5 Free"; font-weight: 400; } +th.css-users > .th-inner::before { + content: "\f0c0"; font-family: "Font Awesome 5 Free"; font-size: 15px; +} + +th.css-location > .th-inner::before { + content: "\f3c5"; font-family: "Font Awesome 5 Free"; font-size: 19px; margin-bottom: 0px; +} + + .small-box .inner { padding-left: 15px; padding-right: 15px; @@ -684,6 +701,12 @@ th.css-accessory > .th-inner::before .sidebar-menu { margin-top:100px } + .navbar-custom-menu > .navbar-nav > li.dropdown.user.user-menu { + float:right; + } + .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + margin-right:-39px; + } } @media screen and (max-width: 1268px) and (min-width: 912px){ @@ -890,4 +913,10 @@ input[type="radio"]:checked::before { } .datepicker.dropdown-menu { z-index: 1030 !important; -} \ No newline at end of file +} + +.sidebar-menu > li .badge { + margin-top: 0px; + filter: brightness(70%); + font-size: 70%; +} diff --git a/resources/assets/less/skins/skin-black-dark.less b/resources/assets/less/skins/skin-black-dark.less index 6f0a2204b2..417258702b 100644 --- a/resources/assets/less/skins/skin-black-dark.less +++ b/resources/assets/less/skins/skin-black-dark.less @@ -70,7 +70,7 @@ &.btn-primary, .btn-primary:link { background-color: darken(@black, 10%); - border-color: darken(@black, 20%); + border-color: #FFF; color: #fff; } @@ -375,7 +375,10 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-black-dark .main-header .navbar .dropdown-menu li a { - color: var(--header); + color: #FFFFFF; +} +.skin-black-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #000000; } .fixed-table-body thead th .th-inner, .skin-black-dark .sidebar-menu>li.active>a, .skin-black .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; diff --git a/resources/assets/less/skins/skin-blue-dark.less b/resources/assets/less/skins/skin-blue-dark.less index 6c502b1781..8fedf7b82e 100644 --- a/resources/assets/less/skins/skin-blue-dark.less +++ b/resources/assets/less/skins/skin-blue-dark.less @@ -245,7 +245,6 @@ body { } .btn-primary:hover { background-color: var(--button-primary); - color: var(--link)!important; } #componentsTable>tbody>tr>td>nobr>a>i.fa { color: var(--text-main); @@ -361,7 +360,10 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-blue-dark .main-header .navbar .dropdown-menu li a { - color: var(--header); + color: #FFFFFF; +} +.skin-blue-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #3c8dbc; } .fixed-table-body thead th .th-inner, .skin-blue-dark .sidebar-menu>li.active>a, .skin-blue .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; diff --git a/resources/assets/less/skins/skin-green-dark.less b/resources/assets/less/skins/skin-green-dark.less index 5267803656..48616b324b 100644 --- a/resources/assets/less/skins/skin-green-dark.less +++ b/resources/assets/less/skins/skin-green-dark.less @@ -236,7 +236,6 @@ body { } .btn-primary:hover { background-color: var(--button-primary); - color: var(--link)!important; } #componentsTable>tbody>tr>td>nobr>a>i.fa { color: var(--text-main); @@ -348,7 +347,10 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-green-dark .main-header .navbar .dropdown-menu li a { - color: var(--link); + color: #FFFFFF; +} +.skin-green-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #006300; } .fixed-table-body thead th .th-inner, .skin-green-dark .sidebar-menu>li.active>a, .skin-green .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; diff --git a/resources/assets/less/skins/skin-orange-dark.less b/resources/assets/less/skins/skin-orange-dark.less index 98925b475e..edb35282d8 100644 --- a/resources/assets/less/skins/skin-orange-dark.less +++ b/resources/assets/less/skins/skin-orange-dark.less @@ -243,7 +243,6 @@ a:link.btn-default{ } .btn-primary:hover { background-color: var(--button-primary); - color: var(--link)!important; } #componentsTable>tbody>tr>td>nobr>a>i.fa { color: var(--text-main); @@ -359,7 +358,10 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-orange-dark .main-header .navbar .dropdown-menu li a { - color: var(--header); + color: #FFFFFF; +} +.skin-orange-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #ff8c00; } .fixed-table-body thead th .th-inner, .skin-orange-dark .sidebar-menu>li.active>a, .skin-orange .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; diff --git a/resources/assets/less/skins/skin-purple-dark.less b/resources/assets/less/skins/skin-purple-dark.less index 10868045af..355d6c6204 100644 --- a/resources/assets/less/skins/skin-purple-dark.less +++ b/resources/assets/less/skins/skin-purple-dark.less @@ -246,7 +246,6 @@ body { } .btn-primary:hover { background-color: var(--button-primary); - color: var(--link)!important; } #componentsTable>tbody>tr>td>nobr>a>i.fa { color: var(--text-main); @@ -362,7 +361,10 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-purple-dark .main-header .navbar .dropdown-menu li a { - color: var(--header); + color: #FFFFFF; +} +.skin-purple-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #5f5ca8; } .fixed-table-body thead th .th-inner, .skin-purple-dark .sidebar-menu>li.active>a, .skin-purple .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; diff --git a/resources/assets/less/skins/skin-red-dark.less b/resources/assets/less/skins/skin-red-dark.less index 3fded5f067..1bb7a91e60 100644 --- a/resources/assets/less/skins/skin-red-dark.less +++ b/resources/assets/less/skins/skin-red-dark.less @@ -247,7 +247,6 @@ body { } .btn-primary:hover { background-color: var(--button-primary); - color: var(--link)!important; } #componentsTable>tbody>tr>td>nobr>a>i.fa { color: var(--text-main); @@ -363,7 +362,10 @@ input[type=text], input[type=search] { color: var(--text-main); } .skin-red-dark .main-header .navbar .dropdown-menu li a { - color: var(--header); + color: #FFFFFF; +} +.skin-red-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #c23320; } .fixed-table-body thead th .th-inner, .skin-red-dark .sidebar-menu>li.active>a, .skin-red .sidebar-menu>li:hover>a, .sidebar-toggle:hover { background-color: var(--header)!important; diff --git a/resources/assets/less/skins/skin-yellow-dark.less b/resources/assets/less/skins/skin-yellow-dark.less index c111cb122c..7ac83a451f 100644 --- a/resources/assets/less/skins/skin-yellow-dark.less +++ b/resources/assets/less/skins/skin-yellow-dark.less @@ -55,7 +55,7 @@ &.btn-primary, .btn-primary:link { background-color: var(--button-default); - border-color: var(--button-default); + border-color: #000000; color: #545454; } @@ -355,8 +355,11 @@ input[type=text], input[type=search] { .skin-yellow-dark .main-header .navbar .dropdown-menu li a { color: var(--header); } +.skin-yellow-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #000000; +} tr th div.th-inner { - color:var(--text-main); + color: #FFFFFF; } .tab-content, .tab-pane { background-color: var(--back-main); diff --git a/resources/lang/aa-ER/admin/settings/general.php b/resources/lang/aa-ER/admin/settings/general.php index 6997c6ba83..cd858068bc 100644 --- a/resources/lang/aa-ER/admin/settings/general.php +++ b/resources/lang/aa-ER/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'crwdns1778:0crwdne1778:0', 'two_factor_enabled_text' => 'crwdns1779:0crwdne1779:0', 'two_factor_reset' => 'crwdns1780:0crwdne1780:0', - 'two_factor_reset_help' => 'crwdns1781:0crwdne1781:0', + 'two_factor_reset_help' => 'crwdns12150:0crwdne12150:0', 'two_factor_reset_success' => 'crwdns1782:0crwdne1782:0', 'two_factor_reset_error' => 'crwdns1783:0crwdne1783:0', 'two_factor_enabled_warning' => 'crwdns1784:0crwdne1784:0', diff --git a/resources/lang/aa-ER/general.php b/resources/lang/aa-ER/general.php index e6ff3fcf1f..ec3f1a9968 100644 --- a/resources/lang/aa-ER/general.php +++ b/resources/lang/aa-ER/general.php @@ -1,6 +1,7 @@ 'crwdns12148:0crwdne12148:0', 'accessories' => 'crwdns1200:0crwdne1200:0', 'activated' => 'crwdns1540:0crwdne1540:0', 'accepted_date' => 'crwdns11295:0crwdne11295:0', @@ -518,4 +519,13 @@ return [ ], 'no_requestable' => 'crwdns12128:0crwdne12128:0', + 'countable' => [ + 'accessories' => 'crwdns12136:0crwdne12136:0', + 'assets' => 'crwdns12138:0crwdne12138:0', + 'licenses' => 'crwdns12140:0crwdne12140:0', + 'license_seats' => 'crwdns12142:0crwdne12142:0', + 'consumables' => 'crwdns12144:0crwdne12144:0', + 'components' => 'crwdns12146:0crwdne12146:0', + ] + ]; diff --git a/resources/lang/aa-ER/localizations.php b/resources/lang/aa-ER/localizations.php index 7da17ae8aa..0e695f7a75 100644 --- a/resources/lang/aa-ER/localizations.php +++ b/resources/lang/aa-ER/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'crwdns10642:0crwdne10642:0', 'sk-SK'=> 'crwdns12002:0crwdne12002:0', 'sl-SI'=> 'crwdns12004:0crwdne12004:0', + 'so-SO'=> 'crwdns12134:0crwdne12134:0', 'es-ES'=> 'crwdns10646:0crwdne10646:0', 'es-CO'=> 'crwdns10648:0crwdne10648:0', 'es-MX'=> 'crwdns10650:0crwdne10650:0', diff --git a/resources/lang/aa-ER/validation.php b/resources/lang/aa-ER/validation.php index 3fd034cbcd..a932f8e92a 100644 --- a/resources/lang/aa-ER/validation.php +++ b/resources/lang/aa-ER/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'crwdns6796:0crwdne6796:0' ], + 'checkboxes' => 'crwdns12152:0crwdne12152:0', + 'radio_buttons' => 'crwdns12154:0crwdne12154:0', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'crwdns12156:0crwdne12156:0', ]; diff --git a/resources/lang/af-ZA/admin/settings/general.php b/resources/lang/af-ZA/admin/settings/general.php index 2fbddc5055..1f22421c2c 100644 --- a/resources/lang/af-ZA/admin/settings/general.php +++ b/resources/lang/af-ZA/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Twee-faktorinskrywing', 'two_factor_enabled_text' => 'Aktiveer twee faktore', 'two_factor_reset' => 'Herstel twee-faktor geheim', - 'two_factor_reset_help' => 'Dit sal die gebruiker dwing om hul toestel weer met Google Authenticator in te skryf. Dit kan handig wees as hul toestel wat tans ingeskryf is, verlore of gesteel is.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Twee faktor toestel suksesvol herstel', 'two_factor_reset_error' => 'Twee faktor toestel herstel het misluk', 'two_factor_enabled_warning' => 'As jy twee faktore aktiveer as dit nie tans geaktiveer is nie, sal dit jou dadelik dwing om te verifieer met \'n Google Auth-ingeskrewe toestel. Jy sal die vermoë hê om jou toestel in te skryf as een nie tans ingeskryf is nie.', diff --git a/resources/lang/af-ZA/general.php b/resources/lang/af-ZA/general.php index af8d192a8e..e168381d4d 100644 --- a/resources/lang/af-ZA/general.php +++ b/resources/lang/af-ZA/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'bykomstighede', 'activated' => 'geaktiveer', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/af-ZA/localizations.php b/resources/lang/af-ZA/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/af-ZA/localizations.php +++ b/resources/lang/af-ZA/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/af-ZA/validation.php b/resources/lang/af-ZA/validation.php index fadb10c6ed..2a12ea3ae8 100644 --- a/resources/lang/af-ZA/validation.php +++ b/resources/lang/af-ZA/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/am-ET/admin/settings/general.php b/resources/lang/am-ET/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/am-ET/admin/settings/general.php +++ b/resources/lang/am-ET/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/am-ET/general.php b/resources/lang/am-ET/general.php index 52cf654344..c793b84ccb 100644 --- a/resources/lang/am-ET/general.php +++ b/resources/lang/am-ET/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'መለዋወጫዎች', 'activated' => 'Activated', 'accepted_date' => 'የተቀበለበት ቀን', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/am-ET/localizations.php b/resources/lang/am-ET/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/am-ET/localizations.php +++ b/resources/lang/am-ET/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/am-ET/validation.php b/resources/lang/am-ET/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/am-ET/validation.php +++ b/resources/lang/am-ET/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/ar-SA/admin/settings/general.php b/resources/lang/ar-SA/admin/settings/general.php index 671469ee12..6f551b2c4f 100644 --- a/resources/lang/ar-SA/admin/settings/general.php +++ b/resources/lang/ar-SA/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'اثنان عامل التسجيل', 'two_factor_enabled_text' => 'تمكين عاملين', 'two_factor_reset' => 'إعادة تعيين سر عاملين', - 'two_factor_reset_help' => 'سيؤدي هذا إلى إجبار المستخدم على تسجيل أجهزته باستخدام أداة مصادقة غوغل مرة أخرى. ويمكن أن يكون ذلك مفيدا إذا فقدت أو سرقت الجهاز المسجل حاليا.', + 'two_factor_reset_help' => 'سيؤدي هذا إلى إجبار المستخدم على تسجيل جهازه مع تطبيق المصادقة الخاص به مرة أخرى. ويمكن أن يكون هذا مفيداً إذا فقدت أو سرقت جهازهم المسجل حالياً. ', 'two_factor_reset_success' => 'جهاز عاملين إعادة تعيين بنجاح', 'two_factor_reset_error' => 'أخفق إعادة تعيين عامل عامل اثنين', 'two_factor_enabled_warning' => 'سيؤدي تمكين عاملين إذا لم يتم تمكينه حاليا إلى إجبارك فورا على المصادقة باستخدام جهاز مسجل في غوغل أوث. سيكون لديك القدرة على تسجيل جهازك إذا كان أحد غير مسجل حاليا.', diff --git a/resources/lang/ar-SA/general.php b/resources/lang/ar-SA/general.php index 4ca0c85be0..21098a2c4d 100644 --- a/resources/lang/ar-SA/general.php +++ b/resources/lang/ar-SA/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'ملحقات', 'activated' => 'مفعل', 'accepted_date' => 'تم تخزين التاريخ', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'لا توجد أصول أو نماذج للأصول التي يمكن طلبها.', + 'countable' => [ + 'accessories' => ':count ملحقات :count ملحقات', + 'assets' => ':count أصول :count أصول', + 'licenses' => ':count ترخيص :count تراخيص', + 'license_seats' => ':count مقاعد الرخصة :count مقاعد الرخص', + 'consumables' => ':count مستهلكة :count مستهلك', + 'components' => ':count مكون :count مكونات', + ] + ]; diff --git a/resources/lang/ar-SA/localizations.php b/resources/lang/ar-SA/localizations.php index 20cc8a04f5..288f0bdd09 100644 --- a/resources/lang/ar-SA/localizations.php +++ b/resources/lang/ar-SA/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'السلوفاكية', 'sl-SI'=> 'السلوفينية', + 'so-SO'=> 'Somali', 'es-ES'=> 'الإسبانية', 'es-CO'=> 'الإسبانية، كولومبيا', 'es-MX'=> 'الإسبانية، المكسيك', diff --git a/resources/lang/ar-SA/validation.php b/resources/lang/ar-SA/validation.php index 0356237392..00bd955a10 100644 --- a/resources/lang/ar-SA/validation.php +++ b/resources/lang/ar-SA/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'لا يمكن أن تكون القيمة سالبة' ], + 'checkboxes' => ':attribute يحتوي على خيارات غير صالحة.', + 'radio_buttons' => ':attribute غير صالح.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'القيمة غير صالحة المدرجة في هذا الحقل', ]; diff --git a/resources/lang/bg-BG/admin/hardware/general.php b/resources/lang/bg-BG/admin/hardware/general.php index fcbeb5d60d..94ce94f837 100644 --- a/resources/lang/bg-BG/admin/hardware/general.php +++ b/resources/lang/bg-BG/admin/hardware/general.php @@ -27,13 +27,12 @@ return [ 'undeployable_tooltip' => 'Този актив е забранен за изписване и не може да се изпише в момента.', 'view' => 'Преглед на актив', 'csv_error' => 'Имате грешка във вашият CSV файл:', - 'import_text' => '

Upload a CSV that contains asset history. The assets and users MUST already exist in the system, or they will be skipped. Matching assets for history import happens against the asset tag. We will try to find a matching user based on the user\'s name you provide, and the criteria you select below. If you do not select any criteria below, it will simply try to match on the username format you configured in the Admin > General Settings.

Fields included in the CSV must match the headers: Asset Tag, Name, Checkout Date, Checkin Date. Any additional fields will be ignored.

Checkin Date: blank or future checkin dates will checkout items to associated user. Excluding the Checkin Date column will create a checkin date with todays date.

- ', - 'csv_import_match_f-l' => 'Try to match users by firstname.lastname (jane.smith) format', - 'csv_import_match_initial_last' => 'Try to match users by first initial last name (jsmith) format', - 'csv_import_match_first' => 'Try to match users by first name (jane) format', - 'csv_import_match_email' => 'Try to match users by email as username', - 'csv_import_match_username' => 'Try to match users by username', + 'import_text' => '

Качи CSV файл, който съдържа историята на активите. Активите и потребителите ТРЯБВА да ги има създадени в системата в противен слуай няма да се импортират. При импортиране на историята на активите, съвпадението се прави по техния инвентарен номер. Ще се опитаме да намерим потребителя на база неговото потребителско име и критерия който сте избрали по-долу. Ще се опита да намери съвпадение по формата на потребителско име избран в Admin > General Settings.

Полетата включени в CSV файла, трябва да съвпадат с Инвентарен номер, Име, Дата на изписване, Дата на вписване. Всякакви допълнителни полета ще бъдат игнорирани.

Празна дата на вписване или дата в бъдещето ще изпише актива към асоцийрания потребител. Ако не се включи колона с дата на вписване, същата ще бъде създадена със текущата дата.

', + 'csv_import_match_f-l' => 'Опитай да намериш съвпадение на потребителите по Име.Фамилия (Иван.Иванов)', + 'csv_import_match_initial_last' => 'Опитай да намериш съвпадение на потребителите по Първа буква, Фамилия (ииванов)', + 'csv_import_match_first' => 'Опитай да намериш съвпадение на потребителите по Име (Иван)', + 'csv_import_match_email' => 'Опитай да намериш съвпадение на потребителите по email, като потребителско име', + 'csv_import_match_username' => 'Опитай да намериш съвпадение на потребителите по потребителско име', 'error_messages' => 'Съобщение за грешка:', 'success_messages' => 'Успешно:', 'alert_details' => 'Детайли.', diff --git a/resources/lang/bg-BG/admin/hardware/message.php b/resources/lang/bg-BG/admin/hardware/message.php index ac2b4871e4..63af63ba88 100644 --- a/resources/lang/bg-BG/admin/hardware/message.php +++ b/resources/lang/bg-BG/admin/hardware/message.php @@ -18,7 +18,7 @@ return [ 'success' => 'Активът обновен успешно.', 'nothing_updated' => 'Няма избрани полета, съответно нищо не беше обновено.', 'no_assets_selected' => 'Няма избрани активи, така че нищо не бе обновено.', - 'assets_do_not_exist_or_are_invalid' => 'Selected assets cannot be updated.', + 'assets_do_not_exist_or_are_invalid' => 'Избраните активи не могат да се обновят.', ], 'restore' => [ diff --git a/resources/lang/bg-BG/admin/licenses/general.php b/resources/lang/bg-BG/admin/licenses/general.php index 2cd4cc645e..126220342d 100644 --- a/resources/lang/bg-BG/admin/licenses/general.php +++ b/resources/lang/bg-BG/admin/licenses/general.php @@ -46,6 +46,6 @@ return array( ], ], - 'below_threshold' => 'There are only :remaining_count seats left for this license with a minimum quantity of :min_amt. You may want to consider purchasing more seats.', - 'below_threshold_short' => 'This item is below the minimum required quantity.', + 'below_threshold' => 'Има само :remaining_count лиценз(а) останали от този лиценз с минимално количество от :min_amt. Може да желаете да поръчате допълнително.', + 'below_threshold_short' => 'Този артикул е под минималното необходимо количество.', ); diff --git a/resources/lang/bg-BG/admin/settings/general.php b/resources/lang/bg-BG/admin/settings/general.php index 008322676d..ec071c9398 100644 --- a/resources/lang/bg-BG/admin/settings/general.php +++ b/resources/lang/bg-BG/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Двуфакторово записване', 'two_factor_enabled_text' => 'Разреши два фактор', 'two_factor_reset' => 'Нулиране на двуфакторова тайна', - 'two_factor_reset_help' => 'Това ще принуди потребителя да запише своето устройство с Google Authenticator отново. Това може да бъде полезно ако записаните понастоящем устройства са изгубени или откраднати.', + 'two_factor_reset_help' => 'Това ще принуди потребителя да запише своето устройство с Authenticator отново. Това може да бъде полезно, ако записаните понастоящем устройства са изгубени или откраднати. ', 'two_factor_reset_success' => 'Двуфакторово устройство нулирано успешно', 'two_factor_reset_error' => 'Нулирането на двуфакторово устройство беше неуспешно', 'two_factor_enabled_warning' => 'Разрешаване на два-фактора ако не са разрешени в момента, ще ви принуди незабавно да се удостоверите с устройство записано в Google Auth. Ще имате възможността да запишете устройството си ако нямате такова.', diff --git a/resources/lang/bg-BG/general.php b/resources/lang/bg-BG/general.php index 676b1729e7..c68a356d18 100644 --- a/resources/lang/bg-BG/general.php +++ b/resources/lang/bg-BG/general.php @@ -1,6 +1,7 @@ '2FA нулиране', 'accessories' => 'Аксесоари', 'activated' => 'Активирано', 'accepted_date' => 'Дата на приемане', @@ -201,7 +202,7 @@ return [ 'new_password' => 'Нова парола', 'next' => 'Следващ', 'next_audit_date' => 'Следваща дата на одита', - 'no_email' => 'No email address associated with this user', + 'no_email' => 'Няма е-майл адрес към този потребител', 'last_audit' => 'Последният одит', 'new' => 'new!', 'no_depreciation' => 'Без амортизация', @@ -517,6 +518,15 @@ return [ 'partial' => 'Изтрити :success_count :object_type, но :error_count :object_type не можаха да се изтрият', ], ], - 'no_requestable' => 'There are no requestable assets or asset models.', + 'no_requestable' => 'Няма активи или модели, които могат да бъдат изисквани.', + + 'countable' => [ + 'accessories' => ':count Аксесоар|:count Аксесоари', + 'assets' => ':count Актив|:count Активи', + 'licenses' => ':count Лиценз|:count Лицензи', + 'license_seats' => ':count Лицензно място|:count Лицензни места', + 'consumables' => ':count Консуматив|:count Консумативи', + 'components' => ':count Компонент|:count Компоненти', + ] ]; diff --git a/resources/lang/bg-BG/localizations.php b/resources/lang/bg-BG/localizations.php index c7496f5f97..359139bd87 100644 --- a/resources/lang/bg-BG/localizations.php +++ b/resources/lang/bg-BG/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/bg-BG/validation.php b/resources/lang/bg-BG/validation.php index 9a0a389e5d..6004b5dd0e 100644 --- a/resources/lang/bg-BG/validation.php +++ b/resources/lang/bg-BG/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Стойността не може да бъде отрицателна' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/ca-ES/admin/settings/general.php b/resources/lang/ca-ES/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/ca-ES/admin/settings/general.php +++ b/resources/lang/ca-ES/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/ca-ES/general.php b/resources/lang/ca-ES/general.php index da75286b74..f9511fa92c 100644 --- a/resources/lang/ca-ES/general.php +++ b/resources/lang/ca-ES/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessoris', 'activated' => 'Activat', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ca-ES/localizations.php b/resources/lang/ca-ES/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/ca-ES/localizations.php +++ b/resources/lang/ca-ES/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ca-ES/validation.php b/resources/lang/ca-ES/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/ca-ES/validation.php +++ b/resources/lang/ca-ES/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/cs-CZ/admin/settings/general.php b/resources/lang/cs-CZ/admin/settings/general.php index 7c87c2be79..72d7dec9cb 100644 --- a/resources/lang/cs-CZ/admin/settings/general.php +++ b/resources/lang/cs-CZ/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Dvojfaktorový zápis', 'two_factor_enabled_text' => 'Povolit Dvoufaktorové ověření', 'two_factor_reset' => 'Resetovat dvou faktorové tajemství', - 'two_factor_reset_help' => 'Tímto bude uživatel přinucen, aby znovu zaregistroval své zařízení pomocí aplikace Google Authenticator. To může být užitečné, pokud ztratil nebo mu bylo odcizeno jeho aktuálně zapsané zařízení. ', + 'two_factor_reset_help' => 'To uživatele donutí znovu zapsat své zařízení do svého autentizátoru aplikací. To může být užitečné, pokud je jejich aktuálně zapsané zařízení ztraceno nebo odcizeno. ', 'two_factor_reset_success' => 'Resetování dvoufaktorového zařízení bylo úspěšné', 'two_factor_reset_error' => 'Resetování dvoufaktorového zařízení selhalo', 'two_factor_enabled_warning' => 'Povolení dvoufaktorového zabezpečení, pokud již není v současné době povoleno vás okamžitě donutí k ověření pomocí zařízení zapsaného v Google Auth. Pokud není v současné době žádné registrován. Budete mít možnost zapsat svoje zařízení.', diff --git a/resources/lang/cs-CZ/general.php b/resources/lang/cs-CZ/general.php index 0e7d2f8119..0c42a014e8 100644 --- a/resources/lang/cs-CZ/general.php +++ b/resources/lang/cs-CZ/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Příslušenství', 'activated' => 'Aktivováno', 'accepted_date' => 'Datum přijetí', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Neexistují žádné požadované položky nebo modely aktiv.', + 'countable' => [ + 'accessories' => ':count Příslušenství |:count Příslušenství', + 'assets' => ':count majetek|:count majetku', + 'licenses' => ':count licence|:count licence', + 'license_seats' => ':count sídlo licence|:count licenční místa', + 'consumables' => ':count Spotřební materiál|:count Spotřební materiál', + 'components' => ':count komponenta|:count komponenty', + ] + ]; diff --git a/resources/lang/cs-CZ/localizations.php b/resources/lang/cs-CZ/localizations.php index 879ebf8c67..87e9750980 100644 --- a/resources/lang/cs-CZ/localizations.php +++ b/resources/lang/cs-CZ/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovenština', 'sl-SI'=> 'Slovinština', + 'so-SO'=> 'Somali', 'es-ES'=> 'Španělština', 'es-CO'=> 'Španělština, Kolumbie', 'es-MX'=> 'Španělština, Mexiko', diff --git a/resources/lang/cs-CZ/validation.php b/resources/lang/cs-CZ/validation.php index 6b4f0a6a8f..92c41a0c07 100644 --- a/resources/lang/cs-CZ/validation.php +++ b/resources/lang/cs-CZ/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Hodnota nemůže být záporná' ], + 'checkboxes' => ':attribute obsahuje neplatné možnosti.', + 'radio_buttons' => ':attribute je neplatný.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Neplatná hodnota zahrnutá v tomto poli', ]; diff --git a/resources/lang/cy-GB/admin/settings/general.php b/resources/lang/cy-GB/admin/settings/general.php index 883b3e88de..ec432ed118 100644 --- a/resources/lang/cy-GB/admin/settings/general.php +++ b/resources/lang/cy-GB/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Ymrestru dau factor', 'two_factor_enabled_text' => 'Alluogi dwy factor', 'two_factor_reset' => 'Ailosod cyfrinair dwy factor', - 'two_factor_reset_help' => 'Wneith hyn gorfodi defnyddiwr i ail ymrestru eu dyfais hefo Google Authenticator. Ellith hyn fod yn fuddiol os ydi\'r dyfais sydd wedi ymrestru yn cael ei ddwyn neu golli. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Dyfais dwy factor wedi\'i ail osod yn llwyddiannus', 'two_factor_reset_error' => 'Wedi methu ailosod dyfais dilysaint dau-factor', 'two_factor_enabled_warning' => 'Bydd galluogi dau ffactor os nad yw wedi\'i alluogi ar hyn o bryd yn eich gorfodi ar unwaith i ddilysu gyda dyfais sydd wedi\'i chofrestru gan Google Auth. Bydd gennych y gallu i gofrestru\'ch dyfais os nad yw un wedi\'i gofrestru ar hyn o bryd.', diff --git a/resources/lang/cy-GB/general.php b/resources/lang/cy-GB/general.php index a191056188..cf2b8a06cc 100644 --- a/resources/lang/cy-GB/general.php +++ b/resources/lang/cy-GB/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Ategolion', 'activated' => 'Actifadu', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/cy-GB/localizations.php b/resources/lang/cy-GB/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/cy-GB/localizations.php +++ b/resources/lang/cy-GB/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/cy-GB/validation.php b/resources/lang/cy-GB/validation.php index 6b74e67802..14ee3535de 100644 --- a/resources/lang/cy-GB/validation.php +++ b/resources/lang/cy-GB/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/da-DK/admin/settings/general.php b/resources/lang/da-DK/admin/settings/general.php index a0fe717ac8..03373bfd13 100644 --- a/resources/lang/da-DK/admin/settings/general.php +++ b/resources/lang/da-DK/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Aktivér to faktorer', 'two_factor_reset' => 'Reset 2-Factor Secret', - 'two_factor_reset_help' => 'Dette vil tvinge brugeren til at tilmelde deres enhed med Google Authenticator igen. Dette kan være nyttigt, hvis deres tilmeldte enhed er tabt eller stjålet.', + 'two_factor_reset_help' => 'Dette vil tvinge brugeren til at tilmelde deres enhed med deres autentificerings-app igen. Dette kan være nyttigt, hvis deres aktuelt tilmeldte enhed er tabt eller stjålet. ', 'two_factor_reset_success' => 'To faktor enhed nulstilles', 'two_factor_reset_error' => 'To-faktor enhed reset mislykkedes', 'two_factor_enabled_warning' => 'Aktivering af to-faktor, hvis den ikke er aktiveret, vil straks tvinge dig til at godkende med en Google Auth-indskrevet enhed. Du vil have mulighed for at tilmelde din enhed, hvis en ikke er indskrevet på nuværende tidspunkt.', diff --git a/resources/lang/da-DK/general.php b/resources/lang/da-DK/general.php index ca8eff4160..2a000db42f 100644 --- a/resources/lang/da-DK/general.php +++ b/resources/lang/da-DK/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Tilbehør', 'activated' => 'Aktiveret', 'accepted_date' => 'Dato accepteret', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Der er ingen requestable aktiver eller asset-modeller.', + 'countable' => [ + 'accessories' => ':count Tilbehør:count Tilbehør', + 'assets' => ':count Aktiver:count Aktiver', + 'licenses' => ':count Licens :count Licenser', + 'license_seats' => ':count Licenssæde:count Licenssæder', + 'consumables' => ':count Forbrugsparti:count Forbrugsvarer', + 'components' => ':count Komponent:count Komponenter', + ] + ]; diff --git a/resources/lang/da-DK/localizations.php b/resources/lang/da-DK/localizations.php index e0adeab985..755faba880 100644 --- a/resources/lang/da-DK/localizations.php +++ b/resources/lang/da-DK/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbisk (latin)', 'sk-SK'=> 'Slovakisk', 'sl-SI'=> 'Slovensk', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spansk', 'es-CO'=> 'Spansk (Colombia)', 'es-MX'=> 'Spansk (Mexico)', diff --git a/resources/lang/da-DK/validation.php b/resources/lang/da-DK/validation.php index 8dedf30405..f1b5a5cf99 100644 --- a/resources/lang/da-DK/validation.php +++ b/resources/lang/da-DK/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Værdien må ikke være negativ' ], + 'checkboxes' => ':attribute indeholder ugyldige indstillinger.', + 'radio_buttons' => ':attribute er ugyldig.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Ugyldig værdi inkluderet i dette felt', ]; diff --git a/resources/lang/de-DE/admin/settings/general.php b/resources/lang/de-DE/admin/settings/general.php index 1dbb856d01..58f8970049 100644 --- a/resources/lang/de-DE/admin/settings/general.php +++ b/resources/lang/de-DE/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Zwei-Faktor Registrierung', 'two_factor_enabled_text' => 'Zwei-Faktor-Authentifizierung aktivieren', 'two_factor_reset' => 'Zwei-Faktor-Geheimnis zurücksetzen', - 'two_factor_reset_help' => 'Dies zwingt den Benutzer sein Gerät mit der Google Authenticator App erneut zu registrieren. Dies kann nützlich sein, wenn das aktuell registrierte Gerät verloren ging oder gestohlen wurde. ', + 'two_factor_reset_help' => 'Dies zwingt den Nutzer dazu, sein Gerät erneut mit seiner Authentifizierungs-App zu registrieren. Dies kann nützlich sein, falls das derzeit registrierte Gerät verloren gegangen oder gestohlen wurde. ', 'two_factor_reset_success' => 'Zwei-Faktor-Gerät erfolgreich zurückgesetzt', 'two_factor_reset_error' => 'Zwei-Faktor-Gerät zurücksetzen fehlgeschlagen', 'two_factor_enabled_warning' => 'Die Aktivierung der Zwei-Faktor-Authentifizierung bewirkt, dass Sie sich sofort mit einem bei der Google Authenticator App registrierten Gerät authentifizieren müssen. Sie haben die Möglichkeit ihr Gerät hinzuzufügen falls derzeit keines registriert ist.', diff --git a/resources/lang/de-DE/general.php b/resources/lang/de-DE/general.php index 5cfc2c7037..400fcef4ff 100644 --- a/resources/lang/de-DE/general.php +++ b/resources/lang/de-DE/general.php @@ -1,6 +1,7 @@ 'Zurücksetzen der Zwei-Faktor-Authentifizierung', 'accessories' => 'Zubehör', 'activated' => 'Aktiviert', 'accepted_date' => 'Datum akzeptiert', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Es gibt keine anforderbaren Assets oder Asset-Modelle.', + 'countable' => [ + 'accessories' => ':count Zubehör|:count Zubehöre', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count Lizenz|:count Lizenzen', + 'license_seats' => ':count Lizenzplatz|:count Lizenzplätze', + 'consumables' => ':count Verbrauchsmaterial|:count Verbrauchsmaterialien', + 'components' => ':count Komponente|:count Komponenten', + ] + ]; diff --git a/resources/lang/de-DE/localizations.php b/resources/lang/de-DE/localizations.php index 1ce5ce24c9..e261e982f2 100644 --- a/resources/lang/de-DE/localizations.php +++ b/resources/lang/de-DE/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbisch (Lateinisch)', 'sk-SK'=> 'Slowakisch', 'sl-SI'=> 'Slowenisch', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanisch, Kolumbien', 'es-MX'=> 'Spanisch, Mexiko', diff --git a/resources/lang/de-DE/validation.php b/resources/lang/de-DE/validation.php index 247d3c5d15..11c7a92347 100644 --- a/resources/lang/de-DE/validation.php +++ b/resources/lang/de-DE/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Wert darf nicht negativ sein' ], + 'checkboxes' => ':attribute enthält ungültige Optionen.', + 'radio_buttons' => ':attribute ist ungültig.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', ]; diff --git a/resources/lang/de-if/admin/settings/general.php b/resources/lang/de-if/admin/settings/general.php index ebd1286175..85da3988f0 100644 --- a/resources/lang/de-if/admin/settings/general.php +++ b/resources/lang/de-if/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Zwei-Faktor-Anmeldung', 'two_factor_enabled_text' => 'Zwei-Faktor-Authentifizierung aktivieren', 'two_factor_reset' => 'Zwei-Faktor-Geheimnis zurücksetzen', - 'two_factor_reset_help' => 'Dies zwingt den Benutzer, sein Gerät erneut mit Google Authenticator zu registrieren. Dies kann nützlich sein, wenn das derzeit registrierte Gerät verloren geht oder gestohlen wurde. ', + 'two_factor_reset_help' => 'Dies zwingt den Benutzer, sein Gerät erneut mit seiner Authentifizierungs-App zu registrieren. Dies kann nützlich sein, wenn ihr derzeit angemeldetes Gerät verloren geht oder gestohlen wird. ', 'two_factor_reset_success' => 'Zwei-Faktor-Gerät erfolgreich zurückgesetzt', 'two_factor_reset_error' => 'Zwei-Faktor-Gerät zurücksetzen ist fehlgeschlagen', 'two_factor_enabled_warning' => 'Die Aktivierung der Zwei-Faktor-Authentifizierung bewirkt, dass Du Dich sofort mit einem bei Google Authenticator registrierten Gerät authentifizieren musst. Du hast die Möglichkeit, Dein Gerät hinzuzufügen, falls derzeit keines registriert ist.', diff --git a/resources/lang/de-if/general.php b/resources/lang/de-if/general.php index 0ca4cd915f..ab5377fefc 100644 --- a/resources/lang/de-if/general.php +++ b/resources/lang/de-if/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Zubehör', 'activated' => 'Aktiviert', 'accepted_date' => 'Datum akzeptiert', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Es gibt keine anforderbaren Assets oder Asset-Modelle.', + 'countable' => [ + 'accessories' => ':count Zubehör|:count Zubehör', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count Lizenz|:count Lizenzen', + 'license_seats' => ':count Lizenzsitze|:count Lizenzsitze', + 'consumables' => ':count Verbrauchsmaterialien|:count Verbrauchsmaterialien', + 'components' => ':count Komponente|:count Komponenten', + ] + ]; diff --git a/resources/lang/de-if/localizations.php b/resources/lang/de-if/localizations.php index ed3acd5ece..b351a2e499 100644 --- a/resources/lang/de-if/localizations.php +++ b/resources/lang/de-if/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbisch (Lateinisch)', 'sk-SK'=> 'Slowakisch', 'sl-SI'=> 'Slowenisch', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanisch, Kolumbien', 'es-MX'=> 'Spanisch, Mexiko', diff --git a/resources/lang/de-if/validation.php b/resources/lang/de-if/validation.php index bbfc009669..d96cd772f0 100644 --- a/resources/lang/de-if/validation.php +++ b/resources/lang/de-if/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Wert darf nicht negativ sein' ], + 'checkboxes' => ':attribute enthält ungültige Optionen.', + 'radio_buttons' => ':attribute ist ungültig.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Ungültiger Wert in diesem Feld enthalten', ]; diff --git a/resources/lang/el-GR/admin/settings/general.php b/resources/lang/el-GR/admin/settings/general.php index 4cb7a16c4a..03ce8459ed 100644 --- a/resources/lang/el-GR/admin/settings/general.php +++ b/resources/lang/el-GR/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Εγγραφή δύο συντελεστών', 'two_factor_enabled_text' => 'Ενεργοποίηση ελέγχου ταυτότητας δύο παραγόντων', 'two_factor_reset' => 'Επαναφορά του μυστικού δύο παραγόντων', - 'two_factor_reset_help' => 'Αυτό θα υποχρεώσει τον χρήστη να εγγραφεί ξανά στη συσκευή του με τον Επαληθευτή Google. Αυτό μπορεί να είναι χρήσιμο εάν η τρέχουσα εγγεγραμμένη συσκευή τους χάσει ή κλαπεί.', + 'two_factor_reset_help' => 'Αυτό θα αναγκάσει τον χρήστη να εγγράψει τη συσκευή του με την εφαρμογή ελέγχου ταυτότητας και πάλι. Αυτό μπορεί να είναι χρήσιμο εάν χαθεί ή κλαπεί η συσκευή που έχει εγγραφεί. ', 'two_factor_reset_success' => 'Επαναφορά της συσκευής δύο παραγόντων', 'two_factor_reset_error' => 'Επαναφορά συσκευής δύο παραγόντων απέτυχε', 'two_factor_enabled_warning' => 'Εάν ενεργοποιήσετε τον παράγοντα δύο παραγόντων, εάν δεν είναι ενεργοποιημένος, θα σας αναγκάσει αμέσως να επαληθεύσετε την ταυτότητά σας με μια συσκευή εγγραφής στο Google Auth. Θα έχετε τη δυνατότητα να εγγραφείτε στη συσκευή σας εάν δεν είστε εγγεγραμμένος.', diff --git a/resources/lang/el-GR/general.php b/resources/lang/el-GR/general.php index 8fc81f62a8..3714effef7 100644 --- a/resources/lang/el-GR/general.php +++ b/resources/lang/el-GR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Αξεσουάρ', 'activated' => 'Ενεργοποιήθηκε', 'accepted_date' => 'Ημερομηνία Αποδεκτής', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Δεν υπάρχουν απαιτούμενα στοιχεία ενεργητικού ή μοντέλα στοιχείων ενεργητικού.', + 'countable' => [ + 'accessories' => ':count Αξεσουάρ: Μετρήστε Αξεσουάρ', + 'assets' => ':count Ενεργητικό:count Περιουσιακών Στοιχείων', + 'licenses' => ':count Άδεια Χρήσης:count Άδειες', + 'license_seats' => ':count Άδεια Θέση:count Καθίσματα Άδειας', + 'consumables' => ':count Αναλώσιμα :count Αναλώσιμα', + 'components' => ':count Εξαρτήματα :count', + ] + ]; diff --git a/resources/lang/el-GR/localizations.php b/resources/lang/el-GR/localizations.php index 067dba5b67..739d55b193 100644 --- a/resources/lang/el-GR/localizations.php +++ b/resources/lang/el-GR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Σλοβακικά', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Ισπανικά', 'es-CO'=> 'Ισπανικά, Κολομβία', 'es-MX'=> 'Ισπανικά, Μεξικό', diff --git a/resources/lang/el-GR/validation.php b/resources/lang/el-GR/validation.php index 9473a4d3c3..6f631a58f7 100644 --- a/resources/lang/el-GR/validation.php +++ b/resources/lang/el-GR/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Η τιμή δεν μπορεί να είναι αρνητική' ], + 'checkboxes' => ':attribute περιέχει μη έγκυρες επιλογές.', + 'radio_buttons' => ':attribute δεν είναι έγκυρο.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Μη έγκυρη τιμή που περιλαμβάνεται σε αυτό το πεδίο', ]; diff --git a/resources/lang/en-GB/admin/settings/general.php b/resources/lang/en-GB/admin/settings/general.php index b41f22f404..d95fb575fa 100644 --- a/resources/lang/en-GB/admin/settings/general.php +++ b/resources/lang/en-GB/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/en-GB/general.php b/resources/lang/en-GB/general.php index 1b2ce78aae..c8a6f90cb9 100644 --- a/resources/lang/en-GB/general.php +++ b/resources/lang/en-GB/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/en-GB/localizations.php b/resources/lang/en-GB/localizations.php index 104421a0b0..2dfb05a2ac 100644 --- a/resources/lang/en-GB/localizations.php +++ b/resources/lang/en-GB/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/en-GB/validation.php b/resources/lang/en-GB/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/en-GB/validation.php +++ b/resources/lang/en-GB/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/en-ID/admin/settings/general.php b/resources/lang/en-ID/admin/settings/general.php index 6573f500d3..19e655d579 100644 --- a/resources/lang/en-ID/admin/settings/general.php +++ b/resources/lang/en-ID/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Pendaftaran Dua Faktor', 'two_factor_enabled_text' => 'Aktifkan Dua Faktor', 'two_factor_reset' => 'Atur Ulang Dua Faktor Rahasia', - 'two_factor_reset_help' => 'Ini akan memaksa pengguna untuk mendaftarkan perangkat mereka dengan Google Authenticator lagi. Ini bisa berguna jika perangkat mereka saat ini terdaftar hilang atau dicuri. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Dua perangkat faktor berhasil di-reset', 'two_factor_reset_error' => 'Dua faktor perangkat gagal direset', 'two_factor_enabled_warning' => 'Mengaktifkan dua faktor jika saat ini tidak diaktifkan dan akan segera memaksa anda untuk melakukan otentikasi dengan perangkat yang terdaftar di Google Auth. Anda juga akan memiliki kemampuan untuk mendaftarkan perangkat anda jika seseorang belum terdaftar.', diff --git a/resources/lang/en-ID/general.php b/resources/lang/en-ID/general.php index 059a30dc4e..ea6a6a168a 100644 --- a/resources/lang/en-ID/general.php +++ b/resources/lang/en-ID/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Aksesoris', 'activated' => 'Diaktifkan', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/en-ID/localizations.php b/resources/lang/en-ID/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/en-ID/localizations.php +++ b/resources/lang/en-ID/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/en-ID/validation.php b/resources/lang/en-ID/validation.php index 6807e15dc2..8f562281a1 100644 --- a/resources/lang/en-ID/validation.php +++ b/resources/lang/en-ID/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/en-US/admin/hardware/message.php b/resources/lang/en-US/admin/hardware/message.php index bf050ef974..96b4b6c949 100644 --- a/resources/lang/en-US/admin/hardware/message.php +++ b/resources/lang/en-US/admin/hardware/message.php @@ -17,6 +17,7 @@ return [ 'update' => [ 'error' => 'Asset was not updated, please try again', 'success' => 'Asset updated successfully.', + 'encrypted_warning' => 'Asset updated successfully, but encrypted custom fields were not due to permissions', 'nothing_updated' => 'No fields were selected, so nothing was updated.', 'no_assets_selected' => 'No assets were selected, so nothing was updated.', 'assets_do_not_exist_or_are_invalid' => 'Selected assets cannot be updated.', diff --git a/resources/lang/en-US/admin/licenses/message.php b/resources/lang/en-US/admin/licenses/message.php index c79f631680..27fbfe38a9 100644 --- a/resources/lang/en-US/admin/licenses/message.php +++ b/resources/lang/en-US/admin/licenses/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'License does not exist or you do not have permission to view it.', - 'user_does_not_exist' => 'User does not exist.', + 'user_does_not_exist' => 'User does not exist or you do not have permission to view them.', 'asset_does_not_exist' => 'The asset you are trying to associate with this license does not exist.', 'owner_doesnt_match_asset' => 'The asset you are trying to associate with this license is owned by somene other than the person selected in the assigned to dropdown.', 'assoc_users' => 'This license is currently checked out to a user and cannot be deleted. Please check the license in first, and then try deleting again. ', diff --git a/resources/lang/en-US/admin/licenses/table.php b/resources/lang/en-US/admin/licenses/table.php index dfce4136cb..9cabf9c883 100644 --- a/resources/lang/en-US/admin/licenses/table.php +++ b/resources/lang/en-US/admin/licenses/table.php @@ -4,6 +4,7 @@ return array( 'assigned_to' => 'Assigned To', 'checkout' => 'In/Out', + 'deleted_at' => 'Deleted at', 'id' => 'ID', 'license_email' => 'License Email', 'license_name' => 'Licensed To', diff --git a/resources/lang/en-US/admin/users/table.php b/resources/lang/en-US/admin/users/table.php index b8b919bf28..7c5fb2cad5 100644 --- a/resources/lang/en-US/admin/users/table.php +++ b/resources/lang/en-US/admin/users/table.php @@ -20,6 +20,7 @@ return array( 'lock_passwords' => 'Login details cannot be changed on this installation.', 'manager' => 'Manager', 'managed_locations' => 'Managed Locations', + 'managed_users' => 'Managed Users', 'name' => 'Name', 'nogroup' => 'No groups have been created yet. To add one, visit: ', 'notes' => 'Notes', diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 9f9a0e08c7..0b6f613399 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -176,7 +176,7 @@ return [ 'last_name' => 'Last Name', 'license' => 'License', 'license_report' => 'License Report', - 'licenses_available' => 'licenses available', + 'licenses_available' => 'Licenses available', 'licenses' => 'Licenses', 'list_all' => 'List All', 'loading' => 'Loading... please wait....', @@ -245,6 +245,7 @@ return [ 'select_all' => 'Select All', 'search' => 'Search', 'select_category' => 'Select a Category', + 'select_datasource' => 'Select a Datasource', 'select_department' => 'Select a Department', 'select_depreciation' => 'Select a Depreciation Type', 'select_location' => 'Select a Location', @@ -312,6 +313,10 @@ return [ 'token_expired' => 'Your form session has expired. Please try again.', 'login_enabled' => 'Login Enabled', 'audit_due' => 'Due for Audit', + 'audit_due_days' => 'Assets Due for Audit Within :days Day|Assets Due for Audit Within :days Days', + 'checkin_due' => 'Due for Checkin', + 'checkin_overdue' => 'Overdue for Checkin', + 'checkin_due_days' => 'Assets Due for Checkin Within :days Day|Assets Due for Checkin Within :days Days', 'audit_overdue' => 'Overdue for Audit', 'accept' => 'Accept :asset', 'i_accept' => 'I accept', @@ -507,6 +512,9 @@ return [ 'or' => 'or', 'url' => 'URL', 'edit_fieldset' => 'Edit fieldset fields and options', + 'permission_denied_superuser_demo' => 'Permission denied. You cannot update user information for superadmins on the demo.', + 'pwd_reset_not_sent' => 'User is not activated, is LDAP synced, or does not have an email address', + 'error_sending_email' => 'Error sending email', 'bulk' => [ 'delete' => [ diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/en-US/validation.php +++ b/resources/lang/en-US/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/es-CO/admin/settings/general.php b/resources/lang/es-CO/admin/settings/general.php index e04fb528bd..408de4e159 100644 --- a/resources/lang/es-CO/admin/settings/general.php +++ b/resources/lang/es-CO/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Inscripción en dos factores', 'two_factor_enabled_text' => 'Habilitar dos factores', 'two_factor_reset' => 'Restablecer secreto de dos factores', - 'two_factor_reset_help' => 'Esto obligará al usuario a inscribir su dispositivo con Google Authenticator de nuevo. Esto puede ser útil si su dispositivo actualmente inscrito es perdido o robado. ', + 'two_factor_reset_help' => 'Esto obligará al usuario a volver a inscribir su dispositivo en su aplicación de autenticación. Esto puede ser útil si su dispositivo actualmente inscrito es perdido o robado. ', 'two_factor_reset_success' => 'Dispositivo de doble factor restablecido con éxito', 'two_factor_reset_error' => 'Error al restablecer el dispositivo de doble factor', 'two_factor_enabled_warning' => 'Habilitar doble factor si no está habilitado inmediatamente le obligará a autenticarse con un dispositivo inscrito en Google Auth. Tendrás la posibilidad de inscribir tu dispositivo si uno no está actualmente inscrito.', diff --git a/resources/lang/es-CO/general.php b/resources/lang/es-CO/general.php index 2aa80fc3d8..e19bdc9603 100644 --- a/resources/lang/es-CO/general.php +++ b/resources/lang/es-CO/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha aceptada', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'No hay activos o modelos de activos solicitables.', + 'countable' => [ + 'accessories' => ':count Accesorio|:count Accesorios', + 'assets' => ':count Activos|:count Activos', + 'licenses' => ':count Licencia|:count Licencias', + 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'consumables' => ':count Consumible|:count Consumibles', + 'components' => ':count component|:count componentes', + ] + ]; diff --git a/resources/lang/es-CO/localizations.php b/resources/lang/es-CO/localizations.php index 23778098ff..be0ac5f74d 100644 --- a/resources/lang/es-CO/localizations.php +++ b/resources/lang/es-CO/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Eslovaco', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', 'es-MX'=> 'Español, México', diff --git a/resources/lang/es-CO/validation.php b/resources/lang/es-CO/validation.php index 7bf55ce1db..95ec8816e1 100644 --- a/resources/lang/es-CO/validation.php +++ b/resources/lang/es-CO/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'El valor no puede ser negativo' ], + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => ':attribute no es válido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', ]; diff --git a/resources/lang/es-ES/admin/settings/general.php b/resources/lang/es-ES/admin/settings/general.php index 2f5f607bcf..67926f4c38 100644 --- a/resources/lang/es-ES/admin/settings/general.php +++ b/resources/lang/es-ES/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Enrolamiento en verificación en dos pasos', 'two_factor_enabled_text' => 'Activar la verificación en dos pasos', 'two_factor_reset' => 'Reiniciar Secreto de verificación en dos pasos', - 'two_factor_reset_help' => 'Esto forzará al usuario a inscribirse otra vez su dispositivo con Google Authenticator. Esto puede ser útil si la pérdida o robo de su dispositivo actualmente inscrito. ', + 'two_factor_reset_help' => 'Esto obligará al usuario a volver a inscribir su dispositivo en su aplicación de autenticación. Esto puede ser útil si su dispositivo actualmente inscrito es perdido o robado. ', 'two_factor_reset_success' => 'Verificación en dos pasos de dispositivo reiniciado exitosamente', 'two_factor_reset_error' => 'Falló la Verificación en dos pasos del dispositivo', 'two_factor_enabled_warning' => 'Permitiendo dos factores si no está activado inmediatamente obliga a autenticar con un dispositivo de autenticación de Google inscritos. Usted tendrá la posibilidad de inscribirse el dispositivo si uno no está inscrito actualmente.', diff --git a/resources/lang/es-ES/general.php b/resources/lang/es-ES/general.php index 85a879dbbd..302000742e 100644 --- a/resources/lang/es-ES/general.php +++ b/resources/lang/es-ES/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha aceptada', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'No hay activos o modelos de activos solicitables.', + 'countable' => [ + 'accessories' => ':count Accesorio|:count Accesorios', + 'assets' => ':count Activos|:count Activos', + 'licenses' => ':count Licencia|:count Licencias', + 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'consumables' => ':count Consumible|:count Consumibles', + 'components' => ':count component|:count componentes', + ] + ]; diff --git a/resources/lang/es-ES/localizations.php b/resources/lang/es-ES/localizations.php index 71e19bb33e..7a9161e375 100644 --- a/resources/lang/es-ES/localizations.php +++ b/resources/lang/es-ES/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbio (Latino)', 'sk-SK'=> 'Eslovaco', 'sl-SI'=> 'Esloveno', + 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', 'es-MX'=> 'Español, México', diff --git a/resources/lang/es-ES/validation.php b/resources/lang/es-ES/validation.php index 572a5f37e0..cf408dd329 100644 --- a/resources/lang/es-ES/validation.php +++ b/resources/lang/es-ES/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'El valor no puede ser negativo' ], + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => ':attribute no es válido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', ]; diff --git a/resources/lang/es-MX/admin/settings/general.php b/resources/lang/es-MX/admin/settings/general.php index d6e146285a..f01b22a883 100644 --- a/resources/lang/es-MX/admin/settings/general.php +++ b/resources/lang/es-MX/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Enrolamiento en verificación en dos pasos', 'two_factor_enabled_text' => 'Activar la verificación en dos pasos', 'two_factor_reset' => 'Reiniciar Secreto de verificación en dos pasos', - 'two_factor_reset_help' => 'Esto forzará al usuario a inscribirse otra vez su dispositivo con Google Authenticator. Esto puede ser útil si la pérdida o robo de su dispositivo actualmente inscrito. ', + 'two_factor_reset_help' => 'Esto obligará al usuario a volver a inscribir su dispositivo en su aplicación de autenticación. Esto puede ser útil si su dispositivo actualmente inscrito es perdido o robado. ', 'two_factor_reset_success' => 'Verificación en dos pasos de dispositivo reiniciado exitosamente', 'two_factor_reset_error' => 'Falló la Verificación en dos pasos del dispositivo', 'two_factor_enabled_warning' => 'Permitiendo dos factores si no está activado inmediatamente obliga a autenticar con un dispositivo de autenticación de Google inscritos. Usted tendrá la posibilidad de inscribirse el dispositivo si uno no está inscrito actualmente.', diff --git a/resources/lang/es-MX/general.php b/resources/lang/es-MX/general.php index 7077577c11..5992a28a6d 100644 --- a/resources/lang/es-MX/general.php +++ b/resources/lang/es-MX/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha de aceptación', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'No hay activos o modelos de activos solicitables.', + 'countable' => [ + 'accessories' => ':count Accesorio|:count Accesorios', + 'assets' => ':count Activos|:count Activos', + 'licenses' => ':count Licencia|:count Licencias', + 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'consumables' => ':count Consumible|:count Consumibles', + 'components' => ':count component|:count componentes', + ] + ]; diff --git a/resources/lang/es-MX/localizations.php b/resources/lang/es-MX/localizations.php index 21ddca2ee2..35c44db06d 100644 --- a/resources/lang/es-MX/localizations.php +++ b/resources/lang/es-MX/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Eslovaco', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', 'es-MX'=> 'Español, México', diff --git a/resources/lang/es-MX/validation.php b/resources/lang/es-MX/validation.php index e48082a07c..c3866a72d5 100644 --- a/resources/lang/es-MX/validation.php +++ b/resources/lang/es-MX/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'El valor no puede ser negativo' ], + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => ':attribute no es válido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', ]; diff --git a/resources/lang/es-VE/admin/settings/general.php b/resources/lang/es-VE/admin/settings/general.php index b2339631d8..87e7a98cd5 100644 --- a/resources/lang/es-VE/admin/settings/general.php +++ b/resources/lang/es-VE/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Inscripción de verificación en dos pasos', 'two_factor_enabled_text' => 'Activar la verificación en dos pasos', 'two_factor_reset' => 'Reiniciar Secreto de Verificación en dos Pasos', - 'two_factor_reset_help' => 'Esto forzará al usuario a inscribir sus dispositivos con el Autenticador de Google nuevamente. Esto puede ser útil si su dispositivo inscrito actualmente se pierde o es robado. ', + 'two_factor_reset_help' => 'Esto obligará al usuario a volver a inscribir su dispositivo en su aplicación de autenticación. Esto puede ser útil si su dispositivo actualmente inscrito es perdido o robado. ', 'two_factor_reset_success' => 'Verificación de dos pasos del dispositivo reiniciado exitosamente', 'two_factor_reset_error' => 'La verificación de dos pasos del dispositivo ha fallado', 'two_factor_enabled_warning' => 'Habilitar la verificación de dos factores si no está activado actualmente de inmediato te forzará a autenticarte con un dispositivo inscrito en Autenticación de Google. Tendrás la habilidad de inscribir tu dispositivo si uno no está actualmente inscrito.', diff --git a/resources/lang/es-VE/general.php b/resources/lang/es-VE/general.php index 12399c5e68..2c8f6b3f53 100644 --- a/resources/lang/es-VE/general.php +++ b/resources/lang/es-VE/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accesorios', 'activated' => 'Activado', 'accepted_date' => 'Fecha aceptada', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'No hay activos o modelos de activos solicitables.', + 'countable' => [ + 'accessories' => ':count Accesorio|:count Accesorios', + 'assets' => ':count Activos|:count Activos', + 'licenses' => ':count Licencia|:count Licencias', + 'license_seats' => ':count Asiento de licencia|:count Asientos de licencia', + 'consumables' => ':count Consumible|:count Consumibles', + 'components' => ':count component|:count componentes', + ] + ]; diff --git a/resources/lang/es-VE/localizations.php b/resources/lang/es-VE/localizations.php index 23778098ff..be0ac5f74d 100644 --- a/resources/lang/es-VE/localizations.php +++ b/resources/lang/es-VE/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Eslovaco', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Español', 'es-CO'=> 'Español, Colombia', 'es-MX'=> 'Español, México', diff --git a/resources/lang/es-VE/validation.php b/resources/lang/es-VE/validation.php index da892cd4b1..2dd7274202 100644 --- a/resources/lang/es-VE/validation.php +++ b/resources/lang/es-VE/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'El valor no puede ser negativo' ], + 'checkboxes' => ':attribute contiene opciones no válidas.', + 'radio_buttons' => ':attribute no es válido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valor no válido incluido en este campo', ]; diff --git a/resources/lang/et-EE/admin/settings/general.php b/resources/lang/et-EE/admin/settings/general.php index 89a7488967..1eb8693315 100644 --- a/resources/lang/et-EE/admin/settings/general.php +++ b/resources/lang/et-EE/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Kahe faktori registreerimine', 'two_factor_enabled_text' => 'Luba kaks tegurit', 'two_factor_reset' => 'Lähtesta kahefaktori saladus', - 'two_factor_reset_help' => 'See sunnib kasutajat uuesti oma seadet Google Authenticatoriga registreerima. See võib olla kasulik, kui nende praegu registreeritav seade on kadunud või varastatud.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Kahe faktori seade on edukalt lähtestatud', 'two_factor_reset_error' => 'Kaks tegurit seadete lähtestamine nurjus', 'two_factor_enabled_warning' => 'Kaheteguri lubamine, kui see pole praegu lubatud, viib teid otsekohe Google Auth-seadmesse autentimiseks. Teil on võimalus oma seadet registreeruda, kui seda praegu ei ole.', diff --git a/resources/lang/et-EE/general.php b/resources/lang/et-EE/general.php index 3332839c5f..f411c13329 100644 --- a/resources/lang/et-EE/general.php +++ b/resources/lang/et-EE/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Tarvikud', 'activated' => 'Aktiveeritud', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/et-EE/localizations.php b/resources/lang/et-EE/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/et-EE/localizations.php +++ b/resources/lang/et-EE/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/et-EE/validation.php b/resources/lang/et-EE/validation.php index 48146bd504..37f292a3ce 100644 --- a/resources/lang/et-EE/validation.php +++ b/resources/lang/et-EE/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/fa-IR/admin/settings/general.php b/resources/lang/fa-IR/admin/settings/general.php index a263070002..3b087ec16b 100644 --- a/resources/lang/fa-IR/admin/settings/general.php +++ b/resources/lang/fa-IR/admin/settings/general.php @@ -363,7 +363,7 @@ return [ 'two_factor_enrollment' => 'ثبت نام دو عامل', 'two_factor_enabled_text' => 'فعال کردن دو عامل', 'two_factor_reset' => 'تنظیم مجدد دو راز فاکتور', - 'two_factor_reset_help' => 'این باعث می شود کاربر دوباره دستگاه خود را با Google Authenticator ثبت کند. این می تواند مفید باشد اگر دستگاه ثبت شده فعلی شما گم شده یا دزدیده شود.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'دستگاه دو عامل با موفقیت تنظیم مجدد', 'two_factor_reset_error' => 'تنظیم مجدد دستگاه دو عامل انجام نشد', 'two_factor_enabled_warning' => 'فعال کردن دو عامل اگر آن را در حال حاضر فعال نیست، بلافاصله شما را مجبور به تایید با یک دستگاه ثبت نام Google Auth. اگر کسی در حال حاضر ثبت نام نکند، می توانید دستگاه خود را ثبت نام کنید.', diff --git a/resources/lang/fa-IR/general.php b/resources/lang/fa-IR/general.php index 817b6ea72f..fd9ad64bac 100644 --- a/resources/lang/fa-IR/general.php +++ b/resources/lang/fa-IR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'تجهیزات جانبی', 'activated' => 'فعال شد', 'accepted_date' => 'Date Accepted', @@ -610,4 +611,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/fa-IR/localizations.php b/resources/lang/fa-IR/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/fa-IR/localizations.php +++ b/resources/lang/fa-IR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/fa-IR/validation.php b/resources/lang/fa-IR/validation.php index c642a43b87..3c5b9bf6fd 100644 --- a/resources/lang/fa-IR/validation.php +++ b/resources/lang/fa-IR/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'مقدار نباید منفی باشد.' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/fi-FI/admin/settings/general.php b/resources/lang/fi-FI/admin/settings/general.php index 89e68ff6eb..6b9a4dfc8b 100644 --- a/resources/lang/fi-FI/admin/settings/general.php +++ b/resources/lang/fi-FI/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Kaksivaiheisen tunnistautumisen käyttöönotto', 'two_factor_enabled_text' => 'Ota käyttöön kaksivaiheinen tunnistautuminen', 'two_factor_reset' => 'Nollaa MFA salaisuus', - 'two_factor_reset_help' => 'Tämä pakottaa käyttäjän rekisteröimään laitteen uudelleen Google Authenticator -palveluun. Tämä voi olla hyödyllistä, jos heille tällä hetkellä rekisteröidyt laitteet menetetään tai varastetaan. ', + 'two_factor_reset_help' => 'Tämä pakottaa käyttäjän rekisteröimään laitteensa uudelleen niiden todennussovelluksella. Tämä voi olla hyödyllistä, jos heidän tällä hetkellä ilmoittautunut laite katoaa tai varastetaan. ', 'two_factor_reset_success' => 'MFA laite onnistuneesti nollattu', 'two_factor_reset_error' => 'MFA laitteen nollaus epäonnistui', 'two_factor_enabled_warning' => 'Kaksivaiheisen tunnistautumisen ottaminen käyttöön,, pakottaa sinut autentikoimaan Google Auth - laitteella. Voit lisätä sellaisen, jos sellaista ei ole vielä käytössä.', diff --git a/resources/lang/fi-FI/general.php b/resources/lang/fi-FI/general.php index 5a51977a78..7e4a982af5 100644 --- a/resources/lang/fi-FI/general.php +++ b/resources/lang/fi-FI/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Oheistarvikkeet', 'activated' => 'Aktivoitu', 'accepted_date' => 'Hyväksytty, päiväys', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Pyydettäviä omaisuuseriä tai omaisuusmalleja ei ole.', + 'countable' => [ + 'accessories' => ':count Lisävaruste :count Lisätarvikkeet', + 'assets' => ':count Varat :count Varat', + 'licenses' => ':count Lisenssi :count Lisenssit', + 'license_seats' => ':count Lisenssipaikka:count Lisenssi Istuimet', + 'consumables' => ':count Kulutustavara :count Kulutustavarat', + 'components' => ':count Komponentti :count Komponentit', + ] + ]; diff --git a/resources/lang/fi-FI/localizations.php b/resources/lang/fi-FI/localizations.php index 779dcf31ee..0e79f02ef1 100644 --- a/resources/lang/fi-FI/localizations.php +++ b/resources/lang/fi-FI/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbia (latinalainen)', 'sk-SK'=> 'Slovakki', 'sl-SI'=> 'Slovenia', + 'so-SO'=> 'Somali', 'es-ES'=> 'Espanja', 'es-CO'=> 'Espanja, Kolumbia', 'es-MX'=> 'Espanja, Meksiko', diff --git a/resources/lang/fi-FI/validation.php b/resources/lang/fi-FI/validation.php index c0b9e10795..488a37c911 100644 --- a/resources/lang/fi-FI/validation.php +++ b/resources/lang/fi-FI/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Arvo ei voi olla negatiivinen' ], + 'checkboxes' => ':attribute sisältää virheellisiä vaihtoehtoja.', + 'radio_buttons' => ':attribute on virheellinen.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Virheellinen arvo sisältyy tähän kenttään', ]; diff --git a/resources/lang/fil-PH/admin/settings/general.php b/resources/lang/fil-PH/admin/settings/general.php index 10b914c441..e30660b4ac 100644 --- a/resources/lang/fil-PH/admin/settings/general.php +++ b/resources/lang/fil-PH/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Ang Two-Factor Enrollment', 'two_factor_enabled_text' => 'Paganahin ang Dalawang Factor', 'two_factor_reset' => 'I-reset ang Two-Factor na Sekreto', - 'two_factor_reset_help' => 'Ito ay maaaring magpilit sa mga gumagamit na mag-enroll muli sa kanilang device gamit ang Google Authenticator. Ito ay maaaring kapaki-pakinabang kung ang kanilang na-enroll na device ay nawala o ninakaw. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Ang dalawang factor na device ay matagumpay na nai-reset', 'two_factor_reset_error' => 'Ang pag-reset sa dalawang factor na device ay hindi nagtagumpay', 'two_factor_enabled_warning' => 'Paganahin ang dalawang factor kapag ito ay kasalukuyang hindi pinagana ay maaari itong maghatid ng madalian na pagpilit na mag-authenticate gamit ang Google Auth sa na-enroll na device. Ikaw ay mayroong abilidad na i-enroll ang iyong device kapag may isa na hindi pa kasalukuyang naka-enroll.', diff --git a/resources/lang/fil-PH/general.php b/resources/lang/fil-PH/general.php index ef701e595f..af873c2f55 100644 --- a/resources/lang/fil-PH/general.php +++ b/resources/lang/fil-PH/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Mga Aksesorya', 'activated' => 'Pinagana', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/fil-PH/localizations.php b/resources/lang/fil-PH/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/fil-PH/localizations.php +++ b/resources/lang/fil-PH/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/fil-PH/validation.php b/resources/lang/fil-PH/validation.php index ff478aee79..a47cb26d6f 100644 --- a/resources/lang/fil-PH/validation.php +++ b/resources/lang/fil-PH/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/fr-FR/admin/settings/general.php b/resources/lang/fr-FR/admin/settings/general.php index c29de7d036..69a8050deb 100644 --- a/resources/lang/fr-FR/admin/settings/general.php +++ b/resources/lang/fr-FR/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Inscription à deux facteurs', 'two_factor_enabled_text' => 'Activer l\'authentification à deux facteurs', 'two_factor_reset' => 'Réinitialiser le Secret à deux facteurs', - 'two_factor_reset_help' => 'Ceci forcera l’utilisateur à inscrire de nouveau leur appareil avec Google Authenticator. Cela peut être utile si leur appareil actuellement inscrit est perdue ou volée. ', + 'two_factor_reset_help' => 'Ceci forcera l\'utilisateur à réinscrire son appareil avec son application d\'authentification. Cela peut être utile si leur appareil actuellement inscrit est perdu ou volé. ', 'two_factor_reset_success' => 'Dispositif à deux facteurs réinitialisées avec succès', 'two_factor_reset_error' => 'Échec de réinitialisation du dispositif à deux facteurs', 'two_factor_enabled_warning' => 'L\'activation à deux facteurs si elle n\'est pas actuellement activée vous obligera immédiatement à vous authentifier avec un appareil inscrit Google Auth. Vous aurez la possibilité d\'inscrire votre appareil si aucun n\'est inscrit actuellement.', diff --git a/resources/lang/fr-FR/general.php b/resources/lang/fr-FR/general.php index 36c79f60bc..8143f783d5 100644 --- a/resources/lang/fr-FR/general.php +++ b/resources/lang/fr-FR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessoires', 'activated' => 'Activé', 'accepted_date' => 'Date d\'acceptation', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Il n\'y a pas d\'actifs ou de modèles d\'actifs demandés.', + 'countable' => [ + 'accessories' => ':count Accessoire|:count Accessoires', + 'assets' => ':count Actif|:count Actifs', + 'licenses' => ':count Licence|:count Licences', + 'license_seats' => ':count Siège de licence|:count sièges de licence', + 'consumables' => ':count Consommable|:count Consommables', + 'components' => ':count Composant|:count Composants', + ] + ]; diff --git a/resources/lang/fr-FR/localizations.php b/resources/lang/fr-FR/localizations.php index a72da355b2..03f030a6e3 100644 --- a/resources/lang/fr-FR/localizations.php +++ b/resources/lang/fr-FR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbe (latin)', 'sk-SK'=> 'Slovaque', 'sl-SI'=> 'Slovène', + 'so-SO'=> 'Somali', 'es-ES'=> 'Espagnol', 'es-CO'=> 'Espagnol, Colombie', 'es-MX'=> 'Espagnol, Mexique', diff --git a/resources/lang/fr-FR/validation.php b/resources/lang/fr-FR/validation.php index 1532d5972e..20bc87f255 100644 --- a/resources/lang/fr-FR/validation.php +++ b/resources/lang/fr-FR/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'La valeur ne peut pas être négative' ], + 'checkboxes' => ':attribute contient des options non valides.', + 'radio_buttons' => ':attribute est invalide.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valeur non valide incluse dans ce champ', ]; diff --git a/resources/lang/ga-IE/admin/settings/general.php b/resources/lang/ga-IE/admin/settings/general.php index 5c46e86ca0..f1c0ed6477 100644 --- a/resources/lang/ga-IE/admin/settings/general.php +++ b/resources/lang/ga-IE/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Rollú Dhá Fachtóir', 'two_factor_enabled_text' => 'Cumasaigh Dhá Fachtóir', 'two_factor_reset' => 'Athshocraigh Dhá-Rúnda Fachtóir', - 'two_factor_reset_help' => 'Cuirfidh sé seo ar an úsáideoir a n-gléas a chlárú le Google Authenticator arís. D\'fhéadfadh sé seo a bheith úsáideach má cailleadh nó goideadh an gléas atá cláraithe faoi láthair.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Athshocraigh dhá fheiste fachtóir go rathúil', 'two_factor_reset_error' => 'Theip ar dhá athshocrú feiste fachtóir', 'two_factor_enabled_warning' => 'Má chuirtear ar chumas dhá fhachtóir mura bhfuil sé á chumasú faoi láthair, cuirfidh tú i bhfeidhm láithreach le d\'fhíordheimhniú le gléas cláraithe Google Auth. Beidh an cumas agat do ghléas a chlárú mura bhfuil duine cláraithe faoi láthair.', diff --git a/resources/lang/ga-IE/general.php b/resources/lang/ga-IE/general.php index 3c68ef5c0e..dde15f12f0 100644 --- a/resources/lang/ga-IE/general.php +++ b/resources/lang/ga-IE/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Gníomhachtaithe', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ga-IE/localizations.php b/resources/lang/ga-IE/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/ga-IE/localizations.php +++ b/resources/lang/ga-IE/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ga-IE/validation.php b/resources/lang/ga-IE/validation.php index 5cfe472ef3..81bdf6af44 100644 --- a/resources/lang/ga-IE/validation.php +++ b/resources/lang/ga-IE/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/he-IL/admin/hardware/form.php b/resources/lang/he-IL/admin/hardware/form.php index 2491e0e9b8..730ab06ce0 100644 --- a/resources/lang/he-IL/admin/hardware/form.php +++ b/resources/lang/he-IL/admin/hardware/form.php @@ -11,7 +11,7 @@ return [ 'bulk_update_help' => 'טופס זה מאפשר לך לעדכן מספר נכסים בבת אחת. מלא רק את השדות שאתה צריך לשנות. כל השדות שנותרו ריקים יישארו ללא שינוי.', 'bulk_update_warn' => 'You are about to edit the properties of a single asset.|You are about to edit the properties of :asset_count assets.', 'bulk_update_with_custom_field' => 'Note the assets are :asset_model_count different types of models.', - 'bulk_update_model_prefix' => 'On Models', + 'bulk_update_model_prefix' => 'בדגמים', 'bulk_update_custom_field_unique' => 'This is a unique field and can not be bulk edited.', 'checkedout_to' => 'הוצא אל', 'checkout_date' => 'תבדוק את התאריך', diff --git a/resources/lang/he-IL/admin/settings/general.php b/resources/lang/he-IL/admin/settings/general.php index 70c114b7d1..160b80d3fe 100644 --- a/resources/lang/he-IL/admin/settings/general.php +++ b/resources/lang/he-IL/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'רישום שני גורמים', 'two_factor_enabled_text' => 'הפעל שני גורמים', 'two_factor_reset' => 'אפס סודי פקטור', - 'two_factor_reset_help' => 'פעולה זו תאלץ את המשתמש לרשום שוב את המכשיר באמצעות Google Authenticator. זה יכול להיות שימושי אם המכשיר נרשם כעת אבד או נגנב.', + 'two_factor_reset_help' => 'פעולה זו תאלץ את המשתמש לרשום שוב את המכשיר באמצעות יישומון האימות שלו. היא יכולה להיות שימושית אם המכשיר שרשום כעת במערכת אבד או נגנב. ', 'two_factor_reset_success' => 'שני מכשיר גורם לאפס בהצלחה', 'two_factor_reset_error' => 'איפוס התקן שני גורמים נכשל', 'two_factor_enabled_warning' => 'הפעלת שני גורמים אם היא אינה מופעלת כעת תאלץ אותך מיד לבצע אימות באמצעות מכשיר רשום של Google Auth. תהיה לך אפשרות לרשום את המכשיר שלך אם אינך רשום כעת.', diff --git a/resources/lang/he-IL/general.php b/resources/lang/he-IL/general.php index b0e8550429..e32c8143fe 100644 --- a/resources/lang/he-IL/general.php +++ b/resources/lang/he-IL/general.php @@ -1,6 +1,7 @@ 'איפוס אימות דו־שלבי', 'accessories' => 'אביזרים', 'activated' => 'מוּפעָל', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/he-IL/localizations.php b/resources/lang/he-IL/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/he-IL/localizations.php +++ b/resources/lang/he-IL/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/he-IL/validation.php b/resources/lang/he-IL/validation.php index 98d4d07165..9cca43938d 100644 --- a/resources/lang/he-IL/validation.php +++ b/resources/lang/he-IL/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'הערך לא יכול להיות שלילי' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/hr-HR/admin/settings/general.php b/resources/lang/hr-HR/admin/settings/general.php index 9fa98618e9..f35cf107f5 100644 --- a/resources/lang/hr-HR/admin/settings/general.php +++ b/resources/lang/hr-HR/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Dva faktora upisa', 'two_factor_enabled_text' => 'Omogući dva faktora', 'two_factor_reset' => 'Poništi dvoznamenkasti faktor', - 'two_factor_reset_help' => 'To će prisiliti korisnika da ponovno registrira svoj uređaj s Googleovom autentifikatorom. To može biti korisno ako je izgubljen ili ukraden trenutačno upisani uređaj.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Uspješno resetira dva faktorska uređaja', 'two_factor_reset_error' => 'Dva faktora resetiranja uređaja nije uspjela', 'two_factor_enabled_warning' => 'Omogućivanje dva faktora ako trenutačno nije omogućeno odmah će vas prisiliti na provjeru autentičnosti pomoću uređaja za prijavu na Google Auth. Moći ćete upisati svoj uređaj ako ga trenutno niste upisali.', diff --git a/resources/lang/hr-HR/general.php b/resources/lang/hr-HR/general.php index 0c521775bf..8d791e1bea 100644 --- a/resources/lang/hr-HR/general.php +++ b/resources/lang/hr-HR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Pribor', 'activated' => 'aktiviran', 'accepted_date' => 'Datum prihvaćen', @@ -32,9 +33,9 @@ return [ 'assets_checked_in_count' => 'assets checked in', 'assets_checked_out_count' => 'assets checked out', 'asset_deleted_warning' => 'This asset has been deleted. You must restore it before you can assign it to someone.', - 'assigned_date' => 'Date Assigned', - 'assigned_to' => 'Assigned to :name', - 'assignee' => 'Assigned to', + 'assigned_date' => 'Datum dodjele', + 'assigned_to' => 'Dodijeljeno :name', + 'assignee' => 'Dodijeljeno', 'avatar_delete' => 'Obriši avatar', 'avatar_upload' => 'Učitaj avatar', 'back' => 'Nazad', @@ -42,13 +43,13 @@ return [ 'bulkaudit' => 'Skupna revizija', 'bulkaudit_status' => 'Status revizije', 'bulk_checkout' => 'Bulk Checkout', - 'bulk_edit' => 'Bulk Edit', - 'bulk_delete' => 'Bulk Delete', + 'bulk_edit' => 'Masovno uredi', + 'bulk_delete' => 'Masovno briši', 'bulk_actions' => 'Masovne radnje', 'bulk_checkin_delete' => 'Bulk Checkin / Delete Users', 'byod' => 'BYOD', - 'byod_help' => 'This device is owned by the user', - 'bystatus' => 'by Status', + 'byod_help' => 'Ovaj uređaj je vlasništvo korisnika', + 'bystatus' => 'po Statusu', 'cancel' => 'Otkazati', 'categories' => 'Kategorije', 'category' => 'Kategorija', @@ -72,19 +73,19 @@ return [ 'consumable' => 'potrošni', 'consumables' => 'Potrošni', 'country' => 'Zemlja', - 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + 'could_not_restore' => 'Greška u obnavljanju :item_type: :error', + 'not_deleted' => ':item_type nije brisan pa ne može biti ni vraćen', 'create' => 'Izradi novu', 'created' => 'Stavka je stvorena', 'created_asset' => 'stvorio imovinu', - 'created_at' => 'Created At', - 'created_by' => 'Created By', - 'record_created' => 'Record Created', + 'created_at' => 'Izrađen', + 'created_by' => 'Izradio/la', + 'record_created' => 'Zapis izrađen', 'updated_at' => 'Ažurirano u', 'currency' => '$', // this is deprecated 'current' => 'struja', - 'current_password' => 'Current Password', - 'customize_report' => 'Customize Report', + 'current_password' => 'Postojeća lozinka', + 'customize_report' => 'Prilagodi izvještaj', 'custom_report' => 'Prilagođeno izvješće o aktivi', 'dashboard' => 'kontrolna ploča', 'days' => 'dana', @@ -102,28 +103,28 @@ return [ 'department' => 'odjel', 'deployed' => 'razmještene', 'depreciation' => 'deprecijacija', - 'depreciations' => 'Depreciations', + 'depreciations' => 'Amortizacija', 'depreciation_report' => 'Izvješće o amortizaciji', 'details' => 'Detalji', 'download' => 'Preuzimanje', - 'download_all' => 'Download All', + 'download_all' => 'Preuzmi sve', 'editprofile' => 'Uredi svoj profil', 'eol' => 'EOL', 'email_domain' => 'Domena e-pošte', 'email_format' => 'Format e-pošte', - 'employee_number' => 'Employee Number', + 'employee_number' => 'Broj djelatnika', 'email_domain_help' => 'Ovo se koristi za generiranje e-adresa prilikom uvoza', - 'error' => 'Error', - 'exclude_archived' => 'Exclude Archived Assets', - 'exclude_deleted' => 'Exclude Deleted Assets', - 'example' => 'Example: ', + 'error' => 'Greška', + 'exclude_archived' => 'Isključi arhiviranu imovinu', + 'exclude_deleted' => 'Isključi izbrisanu imovinu', + 'example' => 'Primjer: ', 'filastname_format' => 'Prvo početno prezime (jsmith@example.com)', 'firstname_lastname_format' => 'Prezime prezime (jane.smith@example.com)', 'firstname_lastname_underscore_format' => 'Ime Prezime (jane_smith@example.com)', 'lastnamefirstinitial_format' => 'Prezime Prvo slovo imena (smithj@example.com)', - 'firstintial_dot_lastname_format' => 'First Initial Last Name (j.smith@example.com)', - 'firstname_lastname_display' => 'First Name Last Name (Jane Smith)', - 'lastname_firstname_display' => 'Last Name First Name (Smith Jane)', + 'firstintial_dot_lastname_format' => 'Inicijal imena i prezime (i.ivic)', + 'firstname_lastname_display' => 'Ime prezime (Ivana Ivić)', + 'lastname_firstname_display' => 'Prezime ime (Ivić Ivana)', 'name_display_format' => 'Name Display Format', 'first' => 'Prvi', 'firstnamelastname' => 'First Name Last Name (janesmith@example.com)', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/hr-HR/localizations.php b/resources/lang/hr-HR/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/hr-HR/localizations.php +++ b/resources/lang/hr-HR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/hr-HR/validation.php b/resources/lang/hr-HR/validation.php index 616da01722..d9db981195 100644 --- a/resources/lang/hr-HR/validation.php +++ b/resources/lang/hr-HR/validation.php @@ -96,15 +96,17 @@ return [ 'url' => 'Format atributa nije važeći.', 'unique_undeleted' => ':attribute mora biti jedinstven.', 'non_circular' => 'The :attribute must not create a circular reference.', - 'not_array' => ':attribute cannot be an array.', + 'not_array' => ':attribute ne smije biti niz.', 'disallow_same_pwd_as_user_fields' => 'Password cannot be the same as the username.', 'letters' => 'Password must contain at least one letter.', - 'numbers' => 'Password must contain at least one number.', + 'numbers' => 'Zaporka treba sadržavati barem jedan broj.', '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.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/hu-HU/admin/settings/general.php b/resources/lang/hu-HU/admin/settings/general.php index e2daa2d8c3..4ce6326d52 100644 --- a/resources/lang/hu-HU/admin/settings/general.php +++ b/resources/lang/hu-HU/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Két faktoros beiratkozás', 'two_factor_enabled_text' => 'Engedélyezze a két tényezőt', 'two_factor_reset' => 'Törölje a két faktor titkát', - 'two_factor_reset_help' => 'Ez arra kényszeríti a felhasználót, hogy újból beiktassa eszközét a Google Hitelesítővel. Ez hasznos lehet, ha az éppen beiratkozott eszközüket elveszik vagy ellopják.', + 'two_factor_reset_help' => 'A felhasználónak újra fel kell vennie az eszközt a hitelesítő alkalmazásba. Ez hasznos lehet, ha az aktuálisan felvett eszközt elveszette vagy ellopták. ', 'two_factor_reset_success' => 'Két tényező eszköz sikeresen visszaáll', 'two_factor_reset_error' => 'Két faktoros eszköz visszaállítása sikertelen', 'two_factor_enabled_warning' => 'A két tényező bekapcsolása, ha nincs aktuálisan engedélyezve, azonnal kényszeríti Önt arra, hogy hitelesítést végezzen egy Google Auth által beiratkozott eszközzel. Lehetőséged lesz arra, hogy beírja a készüléket, ha nincs beiratkozva.', diff --git a/resources/lang/hu-HU/general.php b/resources/lang/hu-HU/general.php index 9476a04dd3..ee68ff9c39 100644 --- a/resources/lang/hu-HU/general.php +++ b/resources/lang/hu-HU/general.php @@ -1,6 +1,7 @@ 'Kétfaktoros azonosítás alaphelyzetbe állítása', 'accessories' => 'Tartozékok', 'activated' => 'Aktivált', 'accepted_date' => 'Visszaigazolás dátuma', @@ -201,7 +202,7 @@ return [ 'new_password' => 'Új jelszó', 'next' => 'Tovább', 'next_audit_date' => 'Következő ellenőrzési dátum', - 'no_email' => 'No email address associated with this user', + 'no_email' => 'Ehhez a felhasználóhoz nincs e-mail társítva', 'last_audit' => 'Utolsó ellenőrzés', 'new' => 'új!', 'no_depreciation' => 'Nincs értékcsökkentés', @@ -462,31 +463,31 @@ return [ 'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.', 'modal_confirm_generic' => 'Biztos benne?', 'cannot_be_deleted' => 'Ez az elem nem törölhető', - 'cannot_be_edited' => 'This item cannot be edited.', - 'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.', + 'cannot_be_edited' => 'Ez az elem nem szerkeszthető.', + 'undeployable_tooltip' => 'Ez az elem nem kiadható. Ellenőrizd a fennmaradó mennyiséget.', 'serial_number' => 'Sorozatszám', 'item_notes' => ':item Megjegyzések', 'item_name_var' => ':eszköz neve', - 'error_user_company' => 'Checkout target company and asset company do not match', - 'error_user_company_accept_view' => 'An Asset assigned to you belongs to a different company so you can\'t accept nor deny it, please check with your manager', + 'error_user_company' => 'A kiadásban szereplő cég nem egyezik meg az eszköznél megadott céggel', + 'error_user_company_accept_view' => 'Egy hozzád rendelt eszköz egy másik céghez tartozik, így nem fogadhatod el vagy utasíthatod vissza, kérlek egyeztess a vezetőddel', 'importer' => [ 'checked_out_to_fullname' => 'Kiadva a következőnek: Full Name', 'checked_out_to_first_name' => 'Kiadva a következőnek: First Name', 'checked_out_to_last_name' => 'Kiadva a következőnek: Last Name', 'checked_out_to_username' => 'Kiadva a következőnek: Username', 'checked_out_to_email' => 'Kiadva a következőnek: Email', - 'checked_out_to_tag' => 'Checked Out to: Asset Tag', + 'checked_out_to_tag' => 'Kiadva a következőnek: Asset Tag', 'manager_first_name' => 'Manager Keresztnév', 'manager_last_name' => 'Manager Vezetéknév', 'manager_full_name' => 'Manager Teljes Név', 'manager_username' => 'Manager Felhasználónév', 'checkout_type' => 'Kiadás Típusa', - 'checkout_location' => 'Checkout to Location', + 'checkout_location' => 'Kiadás helyszínre', 'image_filename' => 'kép fájlnév', 'do_not_import' => 'Ne importáld', 'vip' => 'VIP', 'avatar' => 'Profilkép', - 'gravatar' => 'Gravatar Email', + 'gravatar' => 'Gravatar e-mail', 'currency' => 'Pénznem', 'address2' => 'Cím sor 2', 'import_note' => 'A CSV importálóval betöltve', @@ -497,7 +498,7 @@ return [ 'copy_to_clipboard' => 'Másolás a vágólapra', 'copied' => 'Másolva!', 'status_compatibility' => 'If assets are already assigned, they cannot be changed to a non-deployable status type and this value change will be skipped.', - 'rtd_location_help' => 'This is the location of the asset when it is not checked out', + 'rtd_location_help' => 'Ez az eszköz helye, amikor nincs kiadva', 'item_not_found' => ':item_type ID :id nem létezik, vagy törölve lett', 'action_permission_denied' => 'Nincs jogosultsága a következőhöz: :action :item_type ID :id', 'action_permission_generic' => 'Nincs jogosultsága a következő művelethez: :action a következőn: :item_type', @@ -512,11 +513,20 @@ return [ 'header' => 'Bulk Delete :object_type', 'warn' => 'You are about to delete one :object_type|You are about to delete :count :object_type', 'success' => ':object_type successfully deleted|Successfully deleted :count :object_type', - 'error' => 'Could not delete :object_type', + 'error' => 'A(z) :object_type törlése sikertelen volt', 'nothing_selected' => 'No :object_type selected - nothing to do', 'partial' => 'Deleted :success_count :object_type, but :error_count :object_type could not be deleted', ], ], - 'no_requestable' => 'There are no requestable assets or asset models.', + 'no_requestable' => 'Nincs kikérhető eszköz, vagy eszköz modell.', + + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] ]; diff --git a/resources/lang/hu-HU/localizations.php b/resources/lang/hu-HU/localizations.php index 70623335b5..e70829c9c6 100644 --- a/resources/lang/hu-HU/localizations.php +++ b/resources/lang/hu-HU/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Szerb (latin betűs)', 'sk-SK'=> 'szlovák', 'sl-SI'=> 'Szlovèn', + 'so-SO'=> 'Szomáli', 'es-ES'=> 'Spanyol', 'es-CO'=> 'Spanyol, Kolumbia', 'es-MX'=> 'Spanyol, Mexikó', diff --git a/resources/lang/hu-HU/validation.php b/resources/lang/hu-HU/validation.php index 056c9e1fbf..72fe9af32c 100644 --- a/resources/lang/hu-HU/validation.php +++ b/resources/lang/hu-HU/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Az érték nem lehet negatív' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/id-ID/admin/settings/general.php b/resources/lang/id-ID/admin/settings/general.php index 1e2ed502f1..157b6339ff 100644 --- a/resources/lang/id-ID/admin/settings/general.php +++ b/resources/lang/id-ID/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Pendaftaran Dua Faktor', 'two_factor_enabled_text' => 'Aktifkan Dua Faktor', 'two_factor_reset' => 'Reset Dua Faktor Rahasia', - 'two_factor_reset_help' => 'Ini akan memaksa pengguna untuk mendaftarkan perangkat mereka dengan Google Authenticator lagi. Ini bisa berguna jika perangkat mereka saat ini terdaftar hilang atau dicuri.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Dua perangkat faktor berhasil di-reset', 'two_factor_reset_error' => 'Dua faktor perangkat reset gagal', 'two_factor_enabled_warning' => 'Mengaktifkan dua faktor jika saat ini tidak diaktifkan akan segera memaksa Anda untuk melakukan otentikasi dengan perangkat yang terdaftar di Google Auth. Anda akan memiliki kemampuan untuk mendaftarkan perangkat Anda jika seseorang tidak terdaftar saat ini.', diff --git a/resources/lang/id-ID/general.php b/resources/lang/id-ID/general.php index eaeca65166..644f947a46 100644 --- a/resources/lang/id-ID/general.php +++ b/resources/lang/id-ID/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Aksesoris', 'activated' => 'Diaktifkan', 'accepted_date' => 'Tanggal Diterima', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/id-ID/localizations.php b/resources/lang/id-ID/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/id-ID/localizations.php +++ b/resources/lang/id-ID/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/id-ID/validation.php b/resources/lang/id-ID/validation.php index 8434e8f754..3d20f64887 100644 --- a/resources/lang/id-ID/validation.php +++ b/resources/lang/id-ID/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/is-IS/admin/settings/general.php b/resources/lang/is-IS/admin/settings/general.php index 466e9e93f6..a8a5c122f7 100644 --- a/resources/lang/is-IS/admin/settings/general.php +++ b/resources/lang/is-IS/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/is-IS/general.php b/resources/lang/is-IS/general.php index fa8d8860e1..63acf5863f 100644 --- a/resources/lang/is-IS/general.php +++ b/resources/lang/is-IS/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Aukahlutir', 'activated' => 'Virkjað', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/is-IS/localizations.php b/resources/lang/is-IS/localizations.php index 4df45857b9..aa6176add1 100644 --- a/resources/lang/is-IS/localizations.php +++ b/resources/lang/is-IS/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/is-IS/validation.php b/resources/lang/is-IS/validation.php index 7b54b3c7a2..34dffb25c7 100644 --- a/resources/lang/is-IS/validation.php +++ b/resources/lang/is-IS/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/it-IT/admin/depreciations/general.php b/resources/lang/it-IT/admin/depreciations/general.php index fced8ad21a..b1e9e9ef81 100644 --- a/resources/lang/it-IT/admin/depreciations/general.php +++ b/resources/lang/it-IT/admin/depreciations/general.php @@ -1,16 +1,16 @@ 'About Obsolescenza Asset', - 'about_depreciations' => 'Puoi settare l\'obsolescenza di un Asset per deprezzarlo in base alle percentuale di Obsolescenza.', - 'asset_depreciations' => 'Obsolescenza Asset', + 'about_asset_depreciations' => 'Riguardo al deprezzamento dei Beni', + 'about_depreciations' => 'Puoi configurare i deprezzamenti dei Beni con criterio lineare costante.', + 'asset_depreciations' => 'Deprezzamento Beni', 'create' => 'Crea un deprezzamento', - 'depreciation_name' => 'Nome Obsolescenza', - 'depreciation_min' => 'Valore Finale Svalutazione', + 'depreciation_name' => 'Nome del deprezzamento', + 'depreciation_min' => 'Valore Finale del deprezzamento', 'number_of_months' => 'Numero di Mesi', - 'update' => 'Aggiorna l\'ammortamento', - 'depreciation_min' => 'Valore minimo dopo ammortamento', + 'update' => 'Aggiorna il deprezzamento', + 'depreciation_min' => 'Valore minimo dopo il deprezzamento', 'no_depreciations_warning' => 'Attenzione: - Nessuna svalutazione impostata. - Si prega di impostare almeno una Svalutazione per visualizzarne il report.', + Nessun deprezzamento impostato. + Si prega di impostare almeno un deprezzamento per visualizzarne il report.', ]; diff --git a/resources/lang/it-IT/admin/depreciations/message.php b/resources/lang/it-IT/admin/depreciations/message.php index 0a1a770f49..9fcaaf69b8 100644 --- a/resources/lang/it-IT/admin/depreciations/message.php +++ b/resources/lang/it-IT/admin/depreciations/message.php @@ -2,24 +2,24 @@ return array( - 'does_not_exist' => 'La classe di Obsolescenza non esiste.', - 'assoc_users' => 'Il tipo di obsolescenza è associato con una o più modelli e non può essere cancellato. Prima cancella i modelli correlati e poi riprova a cancellarlo.', + 'does_not_exist' => 'La classe di deprezzamento non esiste.', + 'assoc_users' => 'Questo deprezzamento è associato con una o più modelli e non può essere cancellato. Prima toglilo dai modelli correlati e poi riprova a cancellarlo. ', 'create' => array( - 'error' => 'La classe di Obsolescenza non è stata creata, riprova per favore. :(', - 'success' => 'La classe di Obsolescenza è stata creata correttamente. :)' + 'error' => 'La classe di deprezzamento non è stata creata, riprova per favore. :(', + 'success' => 'Il deprezzamento è stato creato correttamente. :)' ), 'update' => array( - 'error' => 'La classe di Obsolescenza non è stata aggiornata, per favore riprova', - 'success' => 'La Classe di obsolescenza è stata aggiornate correttamente.' + 'error' => 'La classe di deprezzamento non è stata aggiornata, per favore riprova', + 'success' => 'La classe di deprezzamento è stata aggiornata correttamente.' ), 'delete' => array( - 'confirm' => 'Sei sicuro di voler cancellare la classe di obsolescenza?', + 'confirm' => 'Sei sicuro di voler cancellare la classe di deprezzamento?', 'error' => 'C\'è stato un problema durante la cancellazione della classe. Per favore riprova.', - 'success' => 'La classe è stata cancellata con successo.' + 'success' => 'La classe di deprezzamento è stata cancellata con successo.' ) ); diff --git a/resources/lang/it-IT/admin/settings/general.php b/resources/lang/it-IT/admin/settings/general.php index 9920b6e539..07051a200b 100644 --- a/resources/lang/it-IT/admin/settings/general.php +++ b/resources/lang/it-IT/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Iscrizione a due fattori', 'two_factor_enabled_text' => 'Abilita due fattori', 'two_factor_reset' => 'Resettare il segreto a due fattori', - 'two_factor_reset_help' => 'Ciò obbligherà l\'utente a registrare nuovamente il proprio dispositivo con Google Authenticator. Ciò può essere utile se il dispositivo correntemente iscritto viene perso o rubato.', + 'two_factor_reset_help' => 'Questo obbligherà l\'utente a registrare nuovamente il proprio dispositivo con l\'app di autenticazione. Questo può essere utile se il loro dispositivo attualmente iscritto viene perso o rubato. ', 'two_factor_reset_success' => 'Il dispositivo a due fattori viene resettato con successo', 'two_factor_reset_error' => 'Il reset del dispositivo a due fattori è fallito', 'two_factor_enabled_warning' => 'L\'abilitazione di due fattori se non è attualmente abilitata vi obbliga immediatamente a autenticare con un dispositivo di accesso a Google Auth. Avrai la possibilità di registrare il tuo dispositivo se uno non è attualmente iscritto.', diff --git a/resources/lang/it-IT/general.php b/resources/lang/it-IT/general.php index c928103152..949030aecc 100644 --- a/resources/lang/it-IT/general.php +++ b/resources/lang/it-IT/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessori', 'activated' => 'Attivato', 'accepted_date' => 'Accettato Il', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Non ci sono asset o modelli di asset richiesti.', + 'countable' => [ + 'accessories' => ':count Accessorio|:count Accessori', + 'assets' => ':count Bene|:count Beni', + 'licenses' => ':count Licenza|:count Licenze', + 'license_seats' => ':count Disponibilità Licenza|:count Disponibilità Licenza', + 'consumables' => ':count Consumabile|:count Consumabili', + 'components' => ':count Componente|:count Componenti', + ] + ]; diff --git a/resources/lang/it-IT/localizations.php b/resources/lang/it-IT/localizations.php index bccff39b89..cc7ff23b16 100644 --- a/resources/lang/it-IT/localizations.php +++ b/resources/lang/it-IT/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbo (Latino)', 'sk-SK'=> 'Slovacco', 'sl-SI'=> 'Sloveno', + 'so-SO'=> 'Somalo', 'es-ES'=> 'Spagnolo', 'es-CO'=> 'Spagnolo (Colombia)', 'es-MX'=> 'Spagnolo (Messico)', diff --git a/resources/lang/it-IT/validation.php b/resources/lang/it-IT/validation.php index e00696e2ad..bfe552ec6c 100644 --- a/resources/lang/it-IT/validation.php +++ b/resources/lang/it-IT/validation.php @@ -16,7 +16,7 @@ return [ 'accepted' => ':attribute deve essere accettato.', 'active_url' => ':attribute non è un URL valido.', 'after' => ':attribute deve essere una data oltre il :date.', - 'after_or_equal' => ':attribute deve essere una data successiva o uguale a :data .', + 'after_or_equal' => ':attribute deve essere una data successiva o uguale a :date .', 'alpha' => ':attribute può contenere solo lettere.', 'alpha_dash' => ':attribute può contenere solo lettere numeri e trattini.', 'alpha_num' => ':attribute può contenere solo lettere e numeri.', @@ -30,7 +30,7 @@ return [ 'array' => ':attribute deve avere tra: min e: max elementi.', ], 'boolean' => ':attribute deve essere o vero o falso.', - 'confirmed' => 'il :attribute non corrisponde.', + 'confirmed' => 'La conferma di :attribute non corrisponde.', 'date' => ':attribute non è una data valida.', 'date_format' => 'il :attribute non corrisponde al :format.', 'different' => ':attribute e :other devono essere differenti.', @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Il valore non può essere negativo' ], + 'checkboxes' => ':attribute contiene opzioni non valide.', + 'radio_buttons' => ':attribute non è valido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valore non valido incluso in questo campo', ]; diff --git a/resources/lang/iu-NU/admin/settings/general.php b/resources/lang/iu-NU/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/iu-NU/admin/settings/general.php +++ b/resources/lang/iu-NU/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/iu-NU/general.php b/resources/lang/iu-NU/general.php index d879ef7db3..9f9a0e08c7 100644 --- a/resources/lang/iu-NU/general.php +++ b/resources/lang/iu-NU/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/iu-NU/localizations.php b/resources/lang/iu-NU/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/iu-NU/localizations.php +++ b/resources/lang/iu-NU/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/iu-NU/validation.php b/resources/lang/iu-NU/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/iu-NU/validation.php +++ b/resources/lang/iu-NU/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/ja-JP/admin/settings/general.php b/resources/lang/ja-JP/admin/settings/general.php index 3615d03235..1633de6d32 100644 --- a/resources/lang/ja-JP/admin/settings/general.php +++ b/resources/lang/ja-JP/admin/settings/general.php @@ -264,7 +264,7 @@ return [ 'two_factor_enrollment' => '二段階認証登録', 'two_factor_enabled_text' => '二段階認証を有効', 'two_factor_reset' => '二段階認証をリセット', - 'two_factor_reset_help' => 'ユーザーはGoogle Authenticatorでデバイスを再度登録する必要があります。これは、現在登録されているデバイスを紛失または盗難した場合に便利です。 ', + 'two_factor_reset_help' => 'これにより、ユーザーは認証アプリでデバイスを再度登録することが強制されます。 これは、現在登録されているデバイスを紛失または盗難された場合に便利です。 ', 'two_factor_reset_success' => '二段階認証は正常にリセットされました。', 'two_factor_reset_error' => '二段階認証のデバイスリセットに失敗しました。', 'two_factor_enabled_warning' => '二段階認証を有効にすると、Google Authenticatorでの認証が強制されます。あなたがお持ちのデバイスを登録することができます。', diff --git a/resources/lang/ja-JP/general.php b/resources/lang/ja-JP/general.php index d7b513c358..33e65f9a1e 100644 --- a/resources/lang/ja-JP/general.php +++ b/resources/lang/ja-JP/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => '付属品', 'activated' => 'アクティベート', 'accepted_date' => '受理日', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => '要求可能な資産または資産モデルはありません。', + 'countable' => [ + 'accessories' => ':count アクセサリー', + 'assets' => ':count アセット', + 'licenses' => ':count ライセンス', + 'license_seats' => ':count個のライセンスシート', + 'consumables' => ':count 消耗品数', + 'components' => ':count コンポーネント', + ] + ]; diff --git a/resources/lang/ja-JP/localizations.php b/resources/lang/ja-JP/localizations.php index 0f3cff3d38..07edf8a503 100644 --- a/resources/lang/ja-JP/localizations.php +++ b/resources/lang/ja-JP/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'スロバキア語', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'ソマリ語', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ja-JP/validation.php b/resources/lang/ja-JP/validation.php index a86f58a761..98f080b3e2 100644 --- a/resources/lang/ja-JP/validation.php +++ b/resources/lang/ja-JP/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => '負の値にすることはできません' ], + 'checkboxes' => ':attribute に無効なオプションが含まれています。', + 'radio_buttons' => ':attribute は不正です。', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'このフィールドに含まれる値が無効です', ]; diff --git a/resources/lang/km-KH/admin/settings/general.php b/resources/lang/km-KH/admin/settings/general.php index db82420714..3d199fce15 100644 --- a/resources/lang/km-KH/admin/settings/general.php +++ b/resources/lang/km-KH/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/km-KH/general.php b/resources/lang/km-KH/general.php index 6ad4fe6bb5..ce1f27a699 100644 --- a/resources/lang/km-KH/general.php +++ b/resources/lang/km-KH/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'គ្រឿងបន្លាស់', 'activated' => 'បានធ្វើឱ្យសកម្ម', 'accepted_date' => 'កាលបរិច្ឆេទទទួលយក', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/km-KH/localizations.php b/resources/lang/km-KH/localizations.php index bd458e625f..7abb9b3d5e 100644 --- a/resources/lang/km-KH/localizations.php +++ b/resources/lang/km-KH/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'ស៊ែប៊ី (ឡាតាំង)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'ស្លូវេនី', + 'so-SO'=> 'Somali', 'es-ES'=> 'ភាសាអេស្ប៉ាញ', 'es-CO'=> 'អេស្ប៉ាញ កូឡុំប៊ី', 'es-MX'=> 'អេស្ប៉ាញ ម៉ិកស៊ិក', diff --git a/resources/lang/km-KH/validation.php b/resources/lang/km-KH/validation.php index 2f68c0afc1..cd6d9d7e8b 100644 --- a/resources/lang/km-KH/validation.php +++ b/resources/lang/km-KH/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/ko-KR/admin/settings/general.php b/resources/lang/ko-KR/admin/settings/general.php index de7c71fe24..586a2fc99b 100644 --- a/resources/lang/ko-KR/admin/settings/general.php +++ b/resources/lang/ko-KR/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => '2단계 등록', 'two_factor_enabled_text' => '2중 활성화', 'two_factor_reset' => '2중 보안 재설정', - 'two_factor_reset_help' => '이 기능은 강제로 사용자들을 구글 인증을 사용하여 각각의 장치에 다시 등록하게 합니다. 이 기능은 현재 등록한 장치들이 분실이나 도난 당했다면 유용할 것입니다. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => '2중 장치 재설정이 되었습니다', 'two_factor_reset_error' => '2중 장치 재설정이 실패했습니다', 'two_factor_enabled_warning' => '2중 활성화가 현재 활성화되지 않다면 구글 인증으로 등록된 장치를 즉시 강제로 인증하게 할 것입니다. 당신은 하나가 현재 등록되지 않았다면 당신의 장치를 등록할 수 있어야 합니다.', diff --git a/resources/lang/ko-KR/general.php b/resources/lang/ko-KR/general.php index e52cddc0c3..a987a9e881 100644 --- a/resources/lang/ko-KR/general.php +++ b/resources/lang/ko-KR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => '부속품들', 'activated' => '활성화', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ko-KR/localizations.php b/resources/lang/ko-KR/localizations.php index b5b079d9ce..863b6890a9 100644 --- a/resources/lang/ko-KR/localizations.php +++ b/resources/lang/ko-KR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ko-KR/validation.php b/resources/lang/ko-KR/validation.php index ff1ab0a6f2..edd447f250 100644 --- a/resources/lang/ko-KR/validation.php +++ b/resources/lang/ko-KR/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/lt-LT/admin/settings/general.php b/resources/lang/lt-LT/admin/settings/general.php index 32b0f9f7a1..bd121a145e 100644 --- a/resources/lang/lt-LT/admin/settings/general.php +++ b/resources/lang/lt-LT/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Dviejų veiksnių registracija', 'two_factor_enabled_text' => 'Įgalinti du veiksnius', 'two_factor_reset' => 'Atstatyti dviejų veiksnių paslaptį', - 'two_factor_reset_help' => 'Tai privers naudotoją vėl įrašyti įrenginį "Google" autentifikavimo priemone. Tai gali būti naudinga, jei jų šiuo metu užregistruotas įrenginys yra pamestas ar pavogtas.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Dviejų veiksnių įrenginys sėkmingai iš naujo nustatomas', 'two_factor_reset_error' => 'Dviejų veiksnių įrenginio atstatymas nepavyko', 'two_factor_enabled_warning' => 'Įjungus dviejų faktorių, jei jis šiuo metu neįjungtas, iš karto privers jus patvirtinti autentifikavimu naudojant "Google" prijungtą įrenginį. Jūs turėsite galimybę įregistruoti savo įrenginį, jei jis šiuo metu nėra įtrauktas.', diff --git a/resources/lang/lt-LT/general.php b/resources/lang/lt-LT/general.php index 9bf8907c00..11faab8d2a 100644 --- a/resources/lang/lt-LT/general.php +++ b/resources/lang/lt-LT/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Įrangos', 'activated' => 'Aktyvuota', 'accepted_date' => 'Priėmimo data', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/lt-LT/localizations.php b/resources/lang/lt-LT/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/lt-LT/localizations.php +++ b/resources/lang/lt-LT/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/lt-LT/validation.php b/resources/lang/lt-LT/validation.php index 04ed2b947c..644cea938c 100644 --- a/resources/lang/lt-LT/validation.php +++ b/resources/lang/lt-LT/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/lv-LV/admin/settings/general.php b/resources/lang/lv-LV/admin/settings/general.php index e1f76c7bf5..56d4044e47 100644 --- a/resources/lang/lv-LV/admin/settings/general.php +++ b/resources/lang/lv-LV/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Divu faktoru uzņemšana', 'two_factor_enabled_text' => 'Iespējot divus faktorus', 'two_factor_reset' => 'Atiestatīt divfaktora noslēpumu', - 'two_factor_reset_help' => 'Tas liks lietotājam vēlreiz reģistrēt savu ierīci, izmantojot Google autentifikatoru. Tas var būt noderīgi, ja to pašreizējā reģistrētā ierīce tiek nozaudēta vai nozagta.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Divu faktoru ierīce ir veiksmīgi atiestatīta', 'two_factor_reset_error' => 'Divu faktoru ierīces atiestatīšana neizdevās', 'two_factor_enabled_warning' => 'Iespējojot divu faktoru darbību, ja tas pašlaik nav iespējots, jūs nekavējoties piespiedīs autentificēt ar Google Auth reģistrēto ierīci. Jums būs iespēja ierakstīt savu ierīci, ja tā pašlaik nav reģistrēta.', diff --git a/resources/lang/lv-LV/general.php b/resources/lang/lv-LV/general.php index 4059c9a32d..a59892661a 100644 --- a/resources/lang/lv-LV/general.php +++ b/resources/lang/lv-LV/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Aksesuāri', 'activated' => 'Aktivizēts', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/lv-LV/localizations.php b/resources/lang/lv-LV/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/lv-LV/localizations.php +++ b/resources/lang/lv-LV/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/lv-LV/validation.php b/resources/lang/lv-LV/validation.php index 007fbc3e99..bb08c9734a 100644 --- a/resources/lang/lv-LV/validation.php +++ b/resources/lang/lv-LV/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/mi-NZ/admin/settings/general.php b/resources/lang/mi-NZ/admin/settings/general.php index c50b5e5e74..3f2e091a65 100644 --- a/resources/lang/mi-NZ/admin/settings/general.php +++ b/resources/lang/mi-NZ/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Te whakaurunga e rua', 'two_factor_enabled_text' => 'Whakahohehia te Mea Tuarua', 'two_factor_reset' => 'Tautuhi anō i te Tino Tuarua', - 'two_factor_reset_help' => 'Ma tenei ka akiaki te kaiwhakamahi ki te whakauru i to raatau mahi ki a Google Authenticator. Ka taea e tenei te whai hua ki te ngaro, ki te tahaehia ranei to raanei.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'E rua tautuhinga pūrere e tautuhi ana', 'two_factor_reset_error' => 'I rahua nga tautuhinga tautuhi piti', 'two_factor_enabled_warning' => 'Ka taea e koe te whakauru i nga take e rua ki te kore e taea te mahi i tenei wa ka akiaki koe ki te whakauru ki te kaupapa a Google Auth. Ka taea e koe te whakauru i to raatau ki te kore tetahi e whakauruhia ana.', diff --git a/resources/lang/mi-NZ/general.php b/resources/lang/mi-NZ/general.php index 615b925251..39330f5f33 100644 --- a/resources/lang/mi-NZ/general.php +++ b/resources/lang/mi-NZ/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Tuhinga', 'activated' => 'Kua whakahohe', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/mi-NZ/localizations.php b/resources/lang/mi-NZ/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/mi-NZ/localizations.php +++ b/resources/lang/mi-NZ/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/mi-NZ/validation.php b/resources/lang/mi-NZ/validation.php index 57a1043b86..6aff446fe4 100644 --- a/resources/lang/mi-NZ/validation.php +++ b/resources/lang/mi-NZ/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/mk-MK/admin/settings/general.php b/resources/lang/mk-MK/admin/settings/general.php index 329a213cac..bfae7b8336 100644 --- a/resources/lang/mk-MK/admin/settings/general.php +++ b/resources/lang/mk-MK/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/mk-MK/general.php b/resources/lang/mk-MK/general.php index ca943fd148..bfaabcc1e2 100644 --- a/resources/lang/mk-MK/general.php +++ b/resources/lang/mk-MK/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Додатоци', 'activated' => 'Активиран', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/mk-MK/localizations.php b/resources/lang/mk-MK/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/mk-MK/localizations.php +++ b/resources/lang/mk-MK/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/mk-MK/validation.php b/resources/lang/mk-MK/validation.php index b28274b9b9..457dc73d11 100644 --- a/resources/lang/mk-MK/validation.php +++ b/resources/lang/mk-MK/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/ml-IN/admin/settings/general.php b/resources/lang/ml-IN/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/ml-IN/admin/settings/general.php +++ b/resources/lang/ml-IN/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/ml-IN/general.php b/resources/lang/ml-IN/general.php index d9b9a91ae9..e9f23a1df8 100644 --- a/resources/lang/ml-IN/general.php +++ b/resources/lang/ml-IN/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ml-IN/localizations.php b/resources/lang/ml-IN/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/ml-IN/localizations.php +++ b/resources/lang/ml-IN/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ml-IN/validation.php b/resources/lang/ml-IN/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/ml-IN/validation.php +++ b/resources/lang/ml-IN/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/mn-MN/admin/settings/general.php b/resources/lang/mn-MN/admin/settings/general.php index 86058803e4..b10dfcaebb 100644 --- a/resources/lang/mn-MN/admin/settings/general.php +++ b/resources/lang/mn-MN/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Хоёр хүчин зүйлийн элсэлт', 'two_factor_enabled_text' => 'Хоёр хүчин зүйлийг идэвхжүүлэх', 'two_factor_reset' => 'Хоёр хүчин зүйлийн нууцыг дахин тохируулна уу', - 'two_factor_reset_help' => 'Энэ нь хэрэглэгчийг Google Authenticator-т ​​дахин ашиглах боломжтой болно. Энэ нь одоогоор бүртгэгдсэн төхөөрөмжөө алдсан эсвэл хулгайлсан тохиолдолд ашигтай байж болно.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Хоёр хүчин зүйл төхөөрөмжийг амжилттай дахин тохируулах', 'two_factor_reset_error' => 'Хоёр хүчин зүйлийн төхөөрөмжийн дахин тохируулга амжилтгүй боллоо', 'two_factor_enabled_warning' => 'Хэрэв та одоогоор идэвхжээгүй бол хоёр хүчин зүйлийг идэвхжүүлэх нь таныг Google Auth бүртгэлтэй төхөөрөмжтэй таныг баталгаажуулахыг шаардана. Хэрэв та элсээгүй бол та төхөөрөмжөө бүртгүүлэх боломжтой болно.', diff --git a/resources/lang/mn-MN/general.php b/resources/lang/mn-MN/general.php index 6fed1fad36..475cac16a3 100644 --- a/resources/lang/mn-MN/general.php +++ b/resources/lang/mn-MN/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Дагалдах хэрэгсэл', 'activated' => 'Идэвхжүүлсэн', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/mn-MN/localizations.php b/resources/lang/mn-MN/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/mn-MN/localizations.php +++ b/resources/lang/mn-MN/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/mn-MN/validation.php b/resources/lang/mn-MN/validation.php index 42716de814..70a99c5323 100644 --- a/resources/lang/mn-MN/validation.php +++ b/resources/lang/mn-MN/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/ms-MY/admin/settings/general.php b/resources/lang/ms-MY/admin/settings/general.php index 929d8a3fd7..292cf1771f 100644 --- a/resources/lang/ms-MY/admin/settings/general.php +++ b/resources/lang/ms-MY/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Pendaftaran Dua Faktor', 'two_factor_enabled_text' => 'Dayakan Dua Faktor', 'two_factor_reset' => 'Menetapkan semula Rahsia Dua Faktor', - 'two_factor_reset_help' => 'Ini akan memaksa pengguna untuk mendaftarkan peranti mereka dengan Pengesah Google sekali lagi. Ini berguna jika peranti yang sedang didaftarkan sekarang hilang atau dicuri.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Peranti dua faktor berjaya diset semula', 'two_factor_reset_error' => 'Penetapan peranti dua faktor gagal', 'two_factor_enabled_warning' => 'Mengaktifkan dua faktor sekiranya ia tidak didayakan akan segera memaksa anda untuk mengesahkan dengan peranti Google Auth terdaftar. Anda akan mempunyai keupayaan untuk mendaftarkan peranti anda jika seseorang tidak mendaftar pada masa ini.', diff --git a/resources/lang/ms-MY/general.php b/resources/lang/ms-MY/general.php index eba2cc6510..968af0ce52 100644 --- a/resources/lang/ms-MY/general.php +++ b/resources/lang/ms-MY/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Aksesori', 'activated' => 'Diaktifkan', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ms-MY/localizations.php b/resources/lang/ms-MY/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/ms-MY/localizations.php +++ b/resources/lang/ms-MY/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ms-MY/validation.php b/resources/lang/ms-MY/validation.php index 352324ca40..85e8b13b95 100644 --- a/resources/lang/ms-MY/validation.php +++ b/resources/lang/ms-MY/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/nl-NL/admin/settings/general.php b/resources/lang/nl-NL/admin/settings/general.php index 12eca509ef..70fb0b25bb 100644 --- a/resources/lang/nl-NL/admin/settings/general.php +++ b/resources/lang/nl-NL/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Twee factor uitrol', 'two_factor_enabled_text' => 'Twee factor inschakelen', 'two_factor_reset' => 'Twee factor geheim herstellen', - 'two_factor_reset_help' => 'Dit zal de gebruiker dwingen om zijn apparaat opnieuw met Google Authenticator te activeren. Dit kan handig zijn als het huidig geactiveerde apparaat gestolen of verloren is. ', + 'two_factor_reset_help' => 'Dit zal de gebruiker dwingen om zijn apparaat opnieuw met zijn authenticatie-app te activeren. Dit kan handig zijn als hun huidig ingeschreven apparaat verloren of gestolen is. ', 'two_factor_reset_success' => 'Twee factor apparaat succesvol opnieuw ingesteld', 'two_factor_reset_error' => 'Twee factor apparaat opnieuw instellen mislukt', 'two_factor_enabled_warning' => 'Het inschakelen van twee factor authenticatie zal direct vereisen dat je authenticeert met een Google Auth geactiveerd apparaat. Je krijgt de mogelijkheid om een apparaat te activeren als dat nog niet het geval is.', diff --git a/resources/lang/nl-NL/general.php b/resources/lang/nl-NL/general.php index 9c506aa4f9..3a3d50bb47 100644 --- a/resources/lang/nl-NL/general.php +++ b/resources/lang/nl-NL/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessoires', 'activated' => 'Geactiveerd', 'accepted_date' => 'Datum geaccepteerd', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Er zijn geen aanvraagbare activa of modellen voor activa.', + 'countable' => [ + 'accessories' => ':count Accessory~:count accessoires', + 'assets' => ':count Asset×:count Assets', + 'licenses' => ':count licentie|:count licenties', + 'license_seats' => ':count Licentie Zater|:count Licentie zitplaatsen', + 'consumables' => ':count Verbruiksverbruiker|:count Verbruiksartikelen', + 'components' => ':count Component|:count componenten', + ] + ]; diff --git a/resources/lang/nl-NL/localizations.php b/resources/lang/nl-NL/localizations.php index aedabc0f78..0af43adbc1 100644 --- a/resources/lang/nl-NL/localizations.php +++ b/resources/lang/nl-NL/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Servisch (latijns)', 'sk-SK'=> 'Slowaaks', 'sl-SI'=> 'Sloveens', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spaans', 'es-CO'=> 'Spaans (Colombia)', 'es-MX'=> 'Spaans (Mexico)', diff --git a/resources/lang/nl-NL/validation.php b/resources/lang/nl-NL/validation.php index b517049d10..315895bdad 100644 --- a/resources/lang/nl-NL/validation.php +++ b/resources/lang/nl-NL/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Waarde mag niet negatief zijn' ], + 'checkboxes' => ':attribute bevat ongeldige opties.', + 'radio_buttons' => ':attribute is ongeldig.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Ongeldige waarde ingevoerd in dit veld', ]; diff --git a/resources/lang/no-NO/admin/settings/general.php b/resources/lang/no-NO/admin/settings/general.php index 580d9f16c3..0ea8fa630b 100644 --- a/resources/lang/no-NO/admin/settings/general.php +++ b/resources/lang/no-NO/admin/settings/general.php @@ -262,7 +262,7 @@ Linjeskift, topptekst, bilder, osv. kan føre til uventede resultater.', 'two_factor_enrollment' => 'To-faktor registrering', 'two_factor_enabled_text' => 'Aktiver to-faktor autentisering', 'two_factor_reset' => 'Tilbakestill to-faktor hemmelighet', - 'two_factor_reset_help' => 'Tving brukeren til å legge til enheten på nytt i Google Authenticator. Dette er nyttig hvis brukerens enhet er mistet eller stjålet. ', + 'two_factor_reset_help' => 'Dette vil tvinge brukeren til å legge inn enheten på nytt med autentiseringsappen. Dette kan være nyttig hvis enheten deres er mistet eller stjålet. ', 'two_factor_reset_success' => 'To-faktor enhet resatt', 'two_factor_reset_error' => 'Reset av to-faktor enhet feilet', 'two_factor_enabled_warning' => 'Aktivering av to-faktor autentisering hvis ikke allerede aktivert vil øyeblikkelig tvinge deg til å autentisere med enhet som er aktivert i Google Authenticator. Du vil ha mulighet til å aktivere enheten din hvis ingen er aktivert fra før.', diff --git a/resources/lang/no-NO/general.php b/resources/lang/no-NO/general.php index 3f87b879e8..7e6a6adc28 100644 --- a/resources/lang/no-NO/general.php +++ b/resources/lang/no-NO/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Tilbehør', 'activated' => 'Aktivert', 'accepted_date' => 'Akseptdato', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Det finnes ingen forespørselbare eiendeler eller modeller.', + 'countable' => [ + 'accessories' => ':count Tilbehør|:count tilbehør', + 'assets' => ':count Eiendeler|:count', + 'licenses' => ':count Lisens|:count lisenser', + 'license_seats' => ':count lisenssete|:count Lisensseter', + 'consumables' => ':count Forbruksvare|:count Forbruksvarer', + 'components' => ':count Komponenter|:count komponenter', + ] + ]; diff --git a/resources/lang/no-NO/localizations.php b/resources/lang/no-NO/localizations.php index ab85bb6ace..ec2ee04a80 100644 --- a/resources/lang/no-NO/localizations.php +++ b/resources/lang/no-NO/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbisk (Latin)', 'sk-SK'=> 'Slovakisk', 'sl-SI'=> 'Slovensk', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spansk', 'es-CO'=> 'Spansk, Colombia', 'es-MX'=> 'Spansk, Mexico', diff --git a/resources/lang/no-NO/validation.php b/resources/lang/no-NO/validation.php index cb761d587e..19d16ae394 100644 --- a/resources/lang/no-NO/validation.php +++ b/resources/lang/no-NO/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Verdi kan ikke være negativ' ], + 'checkboxes' => ':attribute inneholder ugyldige valg.', + 'radio_buttons' => ':attribute er ugyldig.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Ugyldig verdi inkludert i dette feltet', ]; diff --git a/resources/lang/pl-PL/admin/settings/general.php b/resources/lang/pl-PL/admin/settings/general.php index 4f6633f1c6..bb187b7957 100644 --- a/resources/lang/pl-PL/admin/settings/general.php +++ b/resources/lang/pl-PL/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Rejestracja dwóch czynników', 'two_factor_enabled_text' => 'Włącz uwieżytelnianie dwuskładnikowe', 'two_factor_reset' => 'Zresetować dwuskładnikowy klucz', - 'two_factor_reset_help' => 'Spowoduje to zmuszenie użytkownika do ponownego zapisu swojego urządzenia w usłudze Google Authenticator. Może to być przydatne, jeśli ich aktualnie zapisane urządzenie zostanie utracone lub skradzione.', + 'two_factor_reset_help' => 'Spowoduje to zmuszenie użytkownika do zapisania urządzenia do aplikacji uwierzytelniającej. Może to być użyteczne w przypadku zagubienia lub kradzieży aktualnie zamontowanego urządzenia. ', 'two_factor_reset_success' => 'Dwa urządzenia współczynnikowe z powodzeniem zresetowane', 'two_factor_reset_error' => 'Nie udało się zresetować urządzenia', 'two_factor_enabled_warning' => 'Włączenie dwóch czynników, jeśli nie jest aktualnie włączone, natychmiast zmusi Cię do uwierzytelnienia przy użyciu urządzenia z certyfikatem Google Authentication. Będziesz mieć możliwość zapisania urządzenia, jeśli nie jest on aktualnie zapisany.', diff --git a/resources/lang/pl-PL/general.php b/resources/lang/pl-PL/general.php index 3e553707b9..1286384160 100644 --- a/resources/lang/pl-PL/general.php +++ b/resources/lang/pl-PL/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Akcesoria', 'activated' => 'Aktywowana', 'accepted_date' => 'Data akceptacji', @@ -341,7 +342,7 @@ return [ 'last_checkout' => 'Ostatnie zamówienie', 'due_to_checkin' => 'Następuje:liczba pozycji ma zostać wkrótce sprawdzona:', 'expected_checkin' => 'Przewidywana data zwrotu', - 'reminder_checked_out_items' => 'To jest przypomnienie o aktualnie wydanych Tobie przedmiotach. Jeśli uważasz, że ta lista jest niedokładna (brakuje czegoś lub pojawia się tutaj coś, czego nigdy nie otrzymałeś), prosimy o e-mail :reply_to_name pod adresem: :reply_to_addresse.', + 'reminder_checked_out_items' => 'To jest przypomnienie o aktualnie wydanych Tobie przedmiotach. Jeśli uważasz, że ta lista jest niedokładna (brakuje czegoś lub pojawia się tutaj coś, czego nigdy nie otrzymałeś), prosimy o e-mail :reply_to_name pod adresem: :reply_to_address.', 'changed' => 'Zmieniono', 'to' => 'Do', 'report_fields_info' => '

Wybierz pola, które chcesz uwzględnić w raporcie niestandardowym, i kliknij Generuj. Plik (custom-asset-report-RRRR-mm-dd.csv) zostanie pobrany automatycznie i będzie można go otworzyć w programie Excel.

@@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Brak żądanych aktywów lub modeli aktywów.', + 'countable' => [ + 'accessories' => ':count Akcesoria|:count Akcesoria', + 'assets' => ':count aktywów|:count aktywów', + 'licenses' => ':count licencja|:count licencje', + 'license_seats' => ':count Licencja Siedzenia|:count Licencja', + 'consumables' => ':count Materiał|:count Materiałów|:count Materiałów', + 'components' => ':count Składnik|:count Składniki', + ] + ]; diff --git a/resources/lang/pl-PL/localizations.php b/resources/lang/pl-PL/localizations.php index 409a933e42..148b0dab55 100644 --- a/resources/lang/pl-PL/localizations.php +++ b/resources/lang/pl-PL/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'serbski (łaciński)', 'sk-SK'=> 'Słowacki', 'sl-SI'=> 'słoweński', + 'so-SO'=> 'Somali', 'es-ES'=> 'hiszpański', 'es-CO'=> 'hiszpański, Kolumbia', 'es-MX'=> 'hiszpański, Meksyk', diff --git a/resources/lang/pl-PL/validation.php b/resources/lang/pl-PL/validation.php index 5f2dc24838..5e56b7a07c 100644 --- a/resources/lang/pl-PL/validation.php +++ b/resources/lang/pl-PL/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Wartość nie może być ujemna' ], + 'checkboxes' => ':attribute zawiera nieprawidłowe opcje.', + 'radio_buttons' => ':attribute jest nieprawidłowy.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Nieprawidłowa wartość dołączona do tego pola', ]; diff --git a/resources/lang/pt-BR/admin/settings/general.php b/resources/lang/pt-BR/admin/settings/general.php index 5415aa0f5b..74628c93f5 100644 --- a/resources/lang/pt-BR/admin/settings/general.php +++ b/resources/lang/pt-BR/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Ativação de autenticação em dois passos', 'two_factor_enabled_text' => 'Ativar autenticação em dois passos', 'two_factor_reset' => 'Redefinir senha autenticação de pois passos', - 'two_factor_reset_help' => 'Isto irá forçar o usuário a registar o seu dispositivo com Google Authenticator novamente. Isso pode ser útil se seu dispositivo registrado for perdido ou roubado. ', + 'two_factor_reset_help' => 'Isso forçará o usuário a registar o dispositivo com seu aplicativo de autenticação novamente. Isso pode ser útil se seu dispositivo de matrícula for perdido ou roubado. ', 'two_factor_reset_success' => 'Dispositivo de autenticação de dois passos foi redefinido com sucesso', 'two_factor_reset_error' => 'Reset do dispositivo de autenticação de dois passos falhou', 'two_factor_enabled_warning' => 'Ao ativar a autenticação de dois passos se não estiver já ativado, você será forçado a autenticar com o Google Auth com um dispositivo registrado.', diff --git a/resources/lang/pt-BR/general.php b/resources/lang/pt-BR/general.php index 76657b53a0..5adaf5f753 100644 --- a/resources/lang/pt-BR/general.php +++ b/resources/lang/pt-BR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Acessórios', 'activated' => 'Ativado', 'accepted_date' => 'Data de Aceite', @@ -520,4 +521,13 @@ Resultados da Sincronização', ], 'no_requestable' => 'Não há ativos solicitáveis ou modelos de ativos.', + 'countable' => [ + 'accessories' => ':count Acessório|:count Acessórios', + 'assets' => ':count Ativo', + 'licenses' => ':count Licenças|:count Licenças', + 'license_seats' => ':count licença assentonamed@@0:count licença de assentos', + 'consumables' => ':count Consumível|:count Consumíveis', + 'components' => ':count Componente|:count Componentes', + ] + ]; diff --git a/resources/lang/pt-BR/localizations.php b/resources/lang/pt-BR/localizations.php index a0eef230c1..af8493c864 100644 --- a/resources/lang/pt-BR/localizations.php +++ b/resources/lang/pt-BR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Sérvio (Latim)', 'sk-SK'=> 'Eslovaco', 'sl-SI'=> 'Esloveno', + 'so-SO'=> 'Somali', 'es-ES'=> 'Espanhol', 'es-CO'=> 'Espanhol da Colômbia', 'es-MX'=> 'Espanhol do México', diff --git a/resources/lang/pt-BR/validation.php b/resources/lang/pt-BR/validation.php index 83fefaf4ed..c6efdc3dcf 100644 --- a/resources/lang/pt-BR/validation.php +++ b/resources/lang/pt-BR/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Valor não pode ser negativo' ], + 'checkboxes' => ':attribute contém opções inválidas.', + 'radio_buttons' => ':attribute é inválido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valor inválido incluído neste campo', ]; diff --git a/resources/lang/pt-PT/admin/settings/general.php b/resources/lang/pt-PT/admin/settings/general.php index b262905c06..ca6bf5badc 100644 --- a/resources/lang/pt-PT/admin/settings/general.php +++ b/resources/lang/pt-PT/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Ativação de autenticação em dois passos', 'two_factor_enabled_text' => 'Ativar autenticação em dois passos', 'two_factor_reset' => 'Redefinir password autenticação de pois passos', - 'two_factor_reset_help' => 'Isto irá forçar o usuário a registar o seu dispositivo com Google Authenticator novamente. Isso pode ser útil se seu dispositivo actualmente registado for perdido ou roubado. ', + 'two_factor_reset_help' => 'Isso forçará o usuário a registar o dispositivo com seu aplicativo de autenticação novamente. Isso pode ser útil se seu dispositivo de matrícula for perdido ou roubado. ', 'two_factor_reset_success' => 'Dispositivo de autenticação de dois passos foi redefinido com sucesso', 'two_factor_reset_error' => 'Reset do dispositivo de autenticação de dois passos falhou', 'two_factor_enabled_warning' => 'Ao activar a autenticação de dois passos se não estiver já ativado, irá forçar-te a autenticar com o Google Auth com um dispositivo registado.', diff --git a/resources/lang/pt-PT/general.php b/resources/lang/pt-PT/general.php index 7a2beeed16..263b125ffa 100644 --- a/resources/lang/pt-PT/general.php +++ b/resources/lang/pt-PT/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Acessórios', 'activated' => 'Activado', 'accepted_date' => 'Data da Aceitação', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Não há ativos solicitáveis ou modelos de ativos.', + 'countable' => [ + 'accessories' => ':count Acessório™️count Acessórios', + 'assets' => ':count Ativo', + 'licenses' => ':count Licenças,:count Licenças', + 'license_seats' => ':count licença assentonamed@@0:count licença de assentos', + 'consumables' => ':count Consumível|:count Consumíveis', + 'components' => ':count Componente|:count Componentes', + ] + ]; diff --git a/resources/lang/pt-PT/localizations.php b/resources/lang/pt-PT/localizations.php index ec9b029eca..d220a024f2 100644 --- a/resources/lang/pt-PT/localizations.php +++ b/resources/lang/pt-PT/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Sérvio (Latino)', 'sk-SK'=> 'Eslovaco', 'sl-SI'=> 'Esloveno', + 'so-SO'=> 'Somali', 'es-ES'=> 'Espanhol', 'es-CO'=> 'Espanhol, Colômbia', 'es-MX'=> 'Espanhol, México', diff --git a/resources/lang/pt-PT/validation.php b/resources/lang/pt-PT/validation.php index af591d7591..9fa8ba649d 100644 --- a/resources/lang/pt-PT/validation.php +++ b/resources/lang/pt-PT/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Valor não pode ser negativo' ], + 'checkboxes' => ':attribute contém opções inválidas.', + 'radio_buttons' => ':attribute é inválido.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valor inválido incluído neste campo', ]; diff --git a/resources/lang/ro-RO/admin/settings/general.php b/resources/lang/ro-RO/admin/settings/general.php index 6e6b5c5e73..30be36da72 100644 --- a/resources/lang/ro-RO/admin/settings/general.php +++ b/resources/lang/ro-RO/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Înscrierea în doi factori', 'two_factor_enabled_text' => 'Activați doi factori', 'two_factor_reset' => 'Resetați secretul cu două factori', - 'two_factor_reset_help' => 'Acest lucru va obliga utilizatorul să-și înregistreze din nou dispozitivul cu Google Authenticator. Acest lucru poate fi util dacă dispozitivul înmatriculat în prezent este pierdut sau furat.', + 'two_factor_reset_help' => 'Acest lucru va forța utilizatorul să înregistreze din nou dispozitivul cu aplicația de autentificare. Acest lucru poate fi util dacă dispozitivul înscris în prezent este pierdut sau furat. ', 'two_factor_reset_success' => 'Aparatul cu două factori se resetează', 'two_factor_reset_error' => 'Restabilirea dispozitivului cu două factori a eșuat', 'two_factor_enabled_warning' => 'Dacă activați două factori dacă nu este activat în prezent, vă forțați imediat să vă autentificați cu un dispozitiv Google Auth înscris. Veți avea capacitatea de a vă înregistra dispozitivul dacă nu sunteți înscris în prezent.', diff --git a/resources/lang/ro-RO/general.php b/resources/lang/ro-RO/general.php index c89444ed3f..f9ac7dddd1 100644 --- a/resources/lang/ro-RO/general.php +++ b/resources/lang/ro-RO/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accesorii', 'activated' => 'activat', 'accepted_date' => 'Data acceptării', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Nu există active sau modele de active solicitate.', + 'countable' => [ + 'accessories' => ':count Accesorii:count Accesorii', + 'assets' => ':count Active|:count Active', + 'licenses' => ':count Licență:count Licențe', + 'license_seats' => ':count Locul de licență:count Locuri de licență', + 'consumables' => ':count Consumabile|:count Consumabile', + 'components' => ':count Component|:count Componente', + ] + ]; diff --git a/resources/lang/ro-RO/localizations.php b/resources/lang/ro-RO/localizations.php index 680c6b2f0c..58600c3548 100644 --- a/resources/lang/ro-RO/localizations.php +++ b/resources/lang/ro-RO/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovacă', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spaniolă', 'es-CO'=> 'Spaniolă, Columbia', 'es-MX'=> 'Spaniolă, Mexic', diff --git a/resources/lang/ro-RO/validation.php b/resources/lang/ro-RO/validation.php index 4b3fcfcfef..991ed6db96 100644 --- a/resources/lang/ro-RO/validation.php +++ b/resources/lang/ro-RO/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Valoarea nu poate fi negativă' ], + 'checkboxes' => ':attribute conține opțiuni invalide.', + 'radio_buttons' => ':attribute nu este valid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Valoare nevalidă inclusă în acest câmp', ]; diff --git a/resources/lang/ru-RU/admin/settings/general.php b/resources/lang/ru-RU/admin/settings/general.php index 579df410ef..a50b4ef61b 100644 --- a/resources/lang/ru-RU/admin/settings/general.php +++ b/resources/lang/ru-RU/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Двухфакторная регистрация', 'two_factor_enabled_text' => 'Включить двухфакторную аутентификацию', 'two_factor_reset' => 'Сбросить двухфакторный секрет', - 'two_factor_reset_help' => 'Это заставит пользователя снова регистрировать свое устройство с помощью Google Authenticator. Это может быть полезно, если их зарегистрированное устройство потеряно или украдено. ', + 'two_factor_reset_help' => 'Это заставит пользователя снова зарегистрировать свое устройство на устройство-аутентификатор. Это может быть полезно, если зачисленное в данный момент устройство потеряно или украдено. ', 'two_factor_reset_success' => 'Двухфакторное устройство успешно сброшено', 'two_factor_reset_error' => 'Ошибка сброса двухфакторного устройства', 'two_factor_enabled_warning' => 'Если включить двухфакторный режим (если он в данный момент не включен) вы сразу же будете вынуждены проходить аутентификацию на устройстве, зарегистрированном в Google Auth. У вас будет возможность зарегистрировать свое устройство, если оно не зарегистрировано.', diff --git a/resources/lang/ru-RU/general.php b/resources/lang/ru-RU/general.php index 28ec519a17..c442328f28 100644 --- a/resources/lang/ru-RU/general.php +++ b/resources/lang/ru-RU/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Аксессуары', 'activated' => 'Активно', 'accepted_date' => 'Дата принятия', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Нет требуемых активов или моделей активов.', + 'countable' => [ + 'accessories' => ':count Аксессуары|:count Аксессуаров', + 'assets' => ':count Актива|:count Активов', + 'licenses' => ':count лицензия|:count лицензий', + 'license_seats' => ':count лицензия на место|:count мест', + 'consumables' => ':count расходный материал|:count расходников', + 'components' => ':count компонент|:count компонентов', + ] + ]; diff --git a/resources/lang/ru-RU/localizations.php b/resources/lang/ru-RU/localizations.php index 4daa13a574..38dce0ea74 100644 --- a/resources/lang/ru-RU/localizations.php +++ b/resources/lang/ru-RU/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Сербский (Латиница)', 'sk-SK'=> 'Словацкий', 'sl-SI'=> 'Словенский', + 'so-SO'=> 'Somali', 'es-ES'=> 'Испанский', 'es-CO'=> 'Испанский (Колумбия)', 'es-MX'=> 'Испанский (Мексика)', diff --git a/resources/lang/ru-RU/validation.php b/resources/lang/ru-RU/validation.php index 564fe00572..ed24e7bbda 100644 --- a/resources/lang/ru-RU/validation.php +++ b/resources/lang/ru-RU/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Значение не может быть отрицательным' ], + 'checkboxes' => ':attribute содержит недопустимые параметры.', + 'radio_buttons' => ':attribute не верно.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Недопустимое значение в этом поле', ]; diff --git a/resources/lang/si-LK/admin/settings/general.php b/resources/lang/si-LK/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/si-LK/admin/settings/general.php +++ b/resources/lang/si-LK/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/si-LK/general.php b/resources/lang/si-LK/general.php index 7a7a33ac71..cfdbeaeffd 100644 --- a/resources/lang/si-LK/general.php +++ b/resources/lang/si-LK/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/si-LK/localizations.php b/resources/lang/si-LK/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/si-LK/localizations.php +++ b/resources/lang/si-LK/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/si-LK/validation.php b/resources/lang/si-LK/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/si-LK/validation.php +++ b/resources/lang/si-LK/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/sk-SK/admin/settings/general.php b/resources/lang/sk-SK/admin/settings/general.php index 73a330d3f1..ad45409cd7 100644 --- a/resources/lang/sk-SK/admin/settings/general.php +++ b/resources/lang/sk-SK/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/sk-SK/general.php b/resources/lang/sk-SK/general.php index 60f81dd1c0..b2ba69a083 100644 --- a/resources/lang/sk-SK/general.php +++ b/resources/lang/sk-SK/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/sk-SK/localizations.php b/resources/lang/sk-SK/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/sk-SK/localizations.php +++ b/resources/lang/sk-SK/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/sk-SK/validation.php b/resources/lang/sk-SK/validation.php index 9c3e1ecfd2..a2ef32d5c7 100644 --- a/resources/lang/sk-SK/validation.php +++ b/resources/lang/sk-SK/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => '´Hodnota nemôže byť záporná' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/sl-SI/admin/settings/general.php b/resources/lang/sl-SI/admin/settings/general.php index 97496b69af..4bd6e5b54b 100644 --- a/resources/lang/sl-SI/admin/settings/general.php +++ b/resources/lang/sl-SI/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Dvo-stopni vpis', 'two_factor_enabled_text' => 'Omogoči dvostopenjsko avtentikacijo', 'two_factor_reset' => 'Ponastavi dvo-stopenjsko skrivnost', - 'two_factor_reset_help' => 'To bo prisililo uporabnika, da znova vnese svojo napravo z Google Authenticator. To je lahko uporabno, če je njihova trenutno vpisana naprava izgubljena ali ukradena. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Dvostopenjska naprava je bila uspešno ponastavljena', 'two_factor_reset_error' => 'Ponastavitev dvostopenjskih naprav ni uspela', 'two_factor_enabled_warning' => 'Omogočanje dvostopenjske avtentifikacije, če trenutno ni omogočeno, vas bo takoj prisililo, da se potrdite s storitvijo Google Auth. Imeli boste možnost vpisati svojo napravo, če niste včlanjeni.', diff --git a/resources/lang/sl-SI/general.php b/resources/lang/sl-SI/general.php index e457bdf0d8..cf121c79cb 100644 --- a/resources/lang/sl-SI/general.php +++ b/resources/lang/sl-SI/general.php @@ -1,6 +1,7 @@ 'Ponastavi 2FA', 'accessories' => 'Dodatki', 'activated' => 'Aktiviran', 'accepted_date' => 'Date Accepted', @@ -12,7 +13,7 @@ return [ 'admin' => 'Administrator', 'administrator' => 'Skrbnik', 'add_seats' => 'Dodani sedeži', - 'age' => "Age", + 'age' => "Starost", 'all_assets' => 'Vsa sredstva', 'all' => 'Vse', 'archived' => 'Arhivirano', @@ -22,7 +23,7 @@ return [ 'asset_report' => 'Poročilo o sredstvih', 'asset_tag' => 'Oznaka sredstva', 'asset_tags' => 'Asset Tags', - 'assets_available' => 'Assets available', + 'assets_available' => 'Razpoložljiva sredstva', 'accept_assets' => 'Accept Assets :name', 'accept_assets_menu' => 'Accept Assets', 'audit' => 'Revizija', @@ -31,7 +32,7 @@ return [ 'assets_audited' => 'assets audited', 'assets_checked_in_count' => 'assets checked in', 'assets_checked_out_count' => 'assets checked out', - 'asset_deleted_warning' => 'This asset has been deleted. You must restore it before you can assign it to someone.', + 'asset_deleted_warning' => 'To sredstvo je bilo izbrisano. Pred ponovno uporabo ga morate obnoviti.', 'assigned_date' => 'Date Assigned', 'assigned_to' => 'Assigned to :name', 'assignee' => 'Assigned to', @@ -113,7 +114,7 @@ return [ 'email_format' => 'Format e-pošte', 'employee_number' => 'Employee Number', 'email_domain_help' => 'To se uporablja za ustvarjanje e-poštnih naslovov pri uvozu', - 'error' => 'Error', + 'error' => 'Napaka', 'exclude_archived' => 'Exclude Archived Assets', 'exclude_deleted' => 'Exclude Deleted Assets', 'example' => 'Example: ', @@ -520,4 +521,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/sl-SI/localizations.php b/resources/lang/sl-SI/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/sl-SI/localizations.php +++ b/resources/lang/sl-SI/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/sl-SI/validation.php b/resources/lang/sl-SI/validation.php index ace8a00d99..5e4dd5b226 100644 --- a/resources/lang/sl-SI/validation.php +++ b/resources/lang/sl-SI/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/so-SO/admin/hardware/form.php b/resources/lang/so-SO/admin/hardware/form.php index e5709849b0..08ccaa5e5b 100644 --- a/resources/lang/so-SO/admin/hardware/form.php +++ b/resources/lang/so-SO/admin/hardware/form.php @@ -23,7 +23,7 @@ return [ 'depreciation' => 'Qiimo dhaca', 'depreciates_on' => 'Qiimo dhaca On', 'default_location' => 'Goobta ugu talagalka ah', - 'default_location_phone' => 'Default Location Phone', + 'default_location_phone' => 'Taleefanka Goobta ugu tala galay', 'eol_date' => 'Taariikhda EOL', 'eol_rate' => 'Heerka EOL', 'expected_checkin' => 'Taariikhda la filayo', diff --git a/resources/lang/so-SO/admin/hardware/general.php b/resources/lang/so-SO/admin/hardware/general.php index 5b192466e7..33f0604077 100644 --- a/resources/lang/so-SO/admin/hardware/general.php +++ b/resources/lang/so-SO/admin/hardware/general.php @@ -27,13 +27,12 @@ return [ 'undeployable_tooltip' => 'Hantidani waxay leedahay calaamad xaaladeed oo aan la hawlgelin oo aan la hubin karin wakhtigan.', 'view' => 'Daawo Hantida', 'csv_error' => 'Khalad baad ku leedahay faylkaaga CSV:', - 'import_text' => '

Upload a CSV that contains asset history. The assets and users MUST already exist in the system, or they will be skipped. Matching assets for history import happens against the asset tag. We will try to find a matching user based on the user\'s name you provide, and the criteria you select below. If you do not select any criteria below, it will simply try to match on the username format you configured in the Admin > General Settings.

Fields included in the CSV must match the headers: Asset Tag, Name, Checkout Date, Checkin Date. Any additional fields will be ignored.

Checkin Date: blank or future checkin dates will checkout items to associated user. Excluding the Checkin Date column will create a checkin date with todays date.

- ', - 'csv_import_match_f-l' => 'Try to match users by firstname.lastname (jane.smith) format', - 'csv_import_match_initial_last' => 'Try to match users by first initial last name (jsmith) format', - 'csv_import_match_first' => 'Try to match users by first name (jane) format', - 'csv_import_match_email' => 'Try to match users by email as username', - 'csv_import_match_username' => 'Try to match users by username', + 'import_text' => 'Soo rar CSV oo ka kooban taariikhda hantida Hantida iyo isticmaalayaashu waa inay hore ugu jiraan nidaamka, ama waa laga boodi doonaa. Hantida ku habboon soo dejinta taariikhda waxay ku dhacdaa calaamadda hantida Waxaan isku dayi doonaa inaan helno isticmaale u dhigma iyadoo lagu salaynayo magaca isticmaalaha aad bixisay, iyo shuruudaha aad hoos ku doorato. Haddii aadan hoos dooran wax shuruud ah, waxay si fudud isku dayi doontaa inay ku habboonaato qaabka isticmaale ee aad ku habaysay Admin > Goobaha Guud

Meelaha ku jira CSV-ga waa in ay iswaafaqaan madaxyada: Hanti Tag, Magaca, Taariikhda hubinta, Taariikhda hubinta. Goob kasta oo dheeri ah waa la iska indhatiraa

Taariikhda jeegeynta: taariikhaha jeegeynta banaan ama mustaqbalka waxay hubin doontaa alaabta isticmaalaha. Marka laga reebo tiirka Taariikhda Jeegaynta waxay abuuri doontaa taariikh hubin leh taariikhda maanta.

', + 'csv_import_match_f-l' => 'Isku day inaad isticmaalayaasha ku wajahdo qaabkafirstname.name(jane.smith)', + 'csv_import_match_initial_last' => 'Isku day inaad isticmaalayaasha ku wajahdo qaabkafirstname. name(jane. smith)', + 'csv_import_match_first' => 'Isku day inaad isticmaalayaasha ku wajahdo qaabka firstname. name(jane. smith) format', + 'csv_import_match_email' => 'Isku day inaad isticmaalayaasha ku waafajisoemail sidii isticmaale ahaan', + 'csv_import_match_username' => 'Isku day inaad isticmaalayaasha ku waafajisousername', 'error_messages' => 'Fariimaha khaldan:', 'success_messages' => 'Farriimaha guusha:', 'alert_details' => 'Fadlan hoos ka eeg faahfaahinta.', diff --git a/resources/lang/so-SO/admin/hardware/message.php b/resources/lang/so-SO/admin/hardware/message.php index b27e517127..bc9da76b30 100644 --- a/resources/lang/so-SO/admin/hardware/message.php +++ b/resources/lang/so-SO/admin/hardware/message.php @@ -2,8 +2,8 @@ return [ - 'undeployable' => 'Warning: This asset has been marked as currently undeployable. - If this status has changed, please update the asset status.', + 'undeployable' => 'Digniin: Hantidan waxaa loo calaamadeeyay mid aan hadda la daabul karin. + Haddii heerkan uu isbedelay, fadlan cusboonaysii heerka hantida.', 'does_not_exist' => 'Hantidu ma jirto.', 'does_not_exist_or_not_requestable' => 'Hantidaas ma jirto ama lama codsan karo.', 'assoc_users' => 'Hantidan hadda waa la hubiyay isticmaale lamana tirtiri karo Fadlan marka hore hubi hantida, ka dibna isku day mar kale in aad tirtirto. ', @@ -11,7 +11,7 @@ return [ 'create' => [ 'error' => 'Hantida lama abuurin, fadlan isku day mar kale. :(', 'success' => 'Hantida loo sameeyay si guul leh :)', - 'success_linked' => 'Asset with tag :tag was created successfully. Click here to view.', + 'success_linked' => 'Hanti leh sumad :tag si guul leh ayaa loo abuuray. Riix halkan si aad u aragto.', ], 'update' => [ @@ -19,7 +19,7 @@ return [ 'success' => 'Hantida si guul leh ayaa loo cusboonaysiiyay.', 'nothing_updated' => 'Goobo lama dooran, markaa waxba lama cusboonaysiin.', 'no_assets_selected' => 'Wax hanti ah lama dooran, markaa waxba lama cusboonaysiin.', - 'assets_do_not_exist_or_are_invalid' => 'Selected assets cannot be updated.', + 'assets_do_not_exist_or_are_invalid' => 'Hantida la xushay lama cusboonaysiin karo.', ], 'restore' => [ diff --git a/resources/lang/so-SO/admin/models/message.php b/resources/lang/so-SO/admin/models/message.php index c05082bea4..ea835549f8 100644 --- a/resources/lang/so-SO/admin/models/message.php +++ b/resources/lang/so-SO/admin/models/message.php @@ -34,7 +34,7 @@ return array( 'bulkedit' => array( 'error' => 'Wax beero ah lama beddelin, markaa waxba lama cusboonaysiin.', 'success' => 'Qaabka si guul leh ayaa loo cusboonaysiiyay |:model_count moodooyinka si guul leh ayaa loo cusboonaysiiyay.', - 'warn' => 'You are about to update the properties of the following model:|You are about to edit the properties of the following :model_count models:', + 'warn' => 'Waxaad ku dhowdahay inaad cusboonaysiiso sifooyinka qaabkan soo socda:|Waxaad ku dhowdahay inaad wax ka beddesho sifooyinka soo socda: model_count models:', ), diff --git a/resources/lang/so-SO/admin/settings/general.php b/resources/lang/so-SO/admin/settings/general.php index de2b5bf764..e8c1f9f781 100644 --- a/resources/lang/so-SO/admin/settings/general.php +++ b/resources/lang/so-SO/admin/settings/general.php @@ -14,31 +14,31 @@ return [ 'alerts' => 'Digniin', 'alert_title' => 'Cusbooneysii Dejinta Ogeysiinta', 'alert_email' => 'U dir digniinaha', - 'alert_email_help' => 'Email addresses or distribution lists you want alerts to be sent to, comma separated', + 'alert_email_help' => 'Cinwaannada iimaylka ama liisaska qaybinta ee aad rabto in digniinaha loo diro, kala miirad', 'alerts_enabled' => 'Ogeysiinta iimaylka waa la dajiyay', 'alert_interval' => 'Heerka Ogeysiinta Dhacaya (maalmo gudahood)', 'alert_inv_threshold' => 'Xaddiga Digniinaha Alaabta', - 'allow_user_skin' => 'Allow User Skin', - 'allow_user_skin_help_text' => 'Checking this box will allow a user to override the UI skin with a different one.', + 'allow_user_skin' => 'U Oggolow Maqaarka Isticmaalaha', + 'allow_user_skin_help_text' => 'Saxitaanka santuuqan waxay u oggolaan doontaa isticmaaluhu inuu maqaarka UI ku dhaafo mid ka duwan.', 'asset_ids' => 'Aqoonsiga hantida', 'audit_interval' => 'Dhexdhexaadinta Hanti-dhawrka', - 'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months that you use. If you update this value, all of the "next audit dates" for assets with an upcoming audit date will be updated.', + 'audit_interval_help' => 'Haddii lagaa rabo inaad si joogto ah u xisaabiso hantidaada, geli inta u dhaxaysa bilaha aad isticmaasho. Haddii aad cusboonaysiiso qiimahan, dhammaan "taariikhda hantidhawrka soo socda" ee hantida leh taariikhda hantidhawrka ee soo socota waa la cusboonaysiin doonaa.', 'audit_warning_days' => 'Heerka Digniinta Hanti-dhawrka', 'audit_warning_days_help' => 'Immisa maalmood ka hor ayaan kaaga digaynaa marka hantida hanti dhawrku ku beegan tahay?', - 'auto_increment_assets' => 'Generate auto-incrementing asset tags', + 'auto_increment_assets' => 'Samee calaamadaynta hantida oo si toos ah u kordhisa', 'auto_increment_prefix' => 'Horgale (ikhtiyaar)', - 'auto_incrementing_help' => 'Enable auto-incrementing asset tags first to set this', + 'auto_incrementing_help' => 'Daree kor u qaadista otomaatigga ah ee sumadaha hantida marka hore si tan loo dejiyo', 'backups' => 'Kaabta', 'backups_help' => 'Abuur, soo deji, oo soo celi kaydinta ', - 'backups_restoring' => 'Restoring from Backup', + 'backups_restoring' => 'Ka soo celinta kaabta', 'backups_upload' => 'Soo rar kaabta', - 'backups_path' => 'Backups on the server are stored in :path', - 'backups_restore_warning' => 'Use the restore button to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)

Your entire :app_name database and any uploaded files will be completely replaced by what\'s in the backup file. ', + 'backups_path' => 'Kaydka serfarka waxa lagu kaydiyaa :path', + 'backups_restore_warning' => 'Isticmaal badhanka soo celinta si looga soo celiyo kayd hore.(Tani hadda kuma shaqaynayso kaydinta faylka S3 ama Docker.)

Macluumaadkaaga dhan :app_name iyo wixii faylal ah ee la shubo waxaa gabi ahaanba lagu bedeli doonaawaxa ku jira faylka kaydinta. ', 'backups_logged_out' => 'Dhammaan isticmaalayaasha jira, oo ay ku jiraan adiga, waa laga bixi doonaa marka soo celintaada dhammaato.', - 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', + 'backups_large' => 'Kaydka aadka u weyn ayaa laga yaabaa inuu waqti ku qaato isku dayga soo celinta waxaana laga yaabaa inuu weli u baahdo in lagu socodsiiyo khadka taliska. ', 'barcode_settings' => 'Dejinta Barcode', 'confirm_purge' => 'Xaqiiji Nadiifinta', - 'confirm_purge_help' => 'Enter the text "DELETE" in the box below to purge your deleted records. This action cannot be undone and will PERMANENTLY delete all soft-deleted items and users. (You should make a backup first, just to be safe.)', + 'confirm_purge_help' => 'Geli qoraalka "DELETE" sanduuqa hoose si aad u nadiifiso diiwaannadaada tirtiray. Tallaabadan dib looma noqon karo oo waxay si joogto ah u tirtiri doontaa dhammaan walxaha la tirtiray iyo isticmaalayaasha. (Waa inaad marka hore samaysataa kayd, si aad u nabad gasho.)', 'custom_css' => 'CSS gaar ah', 'custom_css_help' => 'Geli wixii caado ah oo CSS ah oo aad jeclaan lahayd inaad isticmaasho. Ha ku darin <style></style> tags', 'custom_forgot_pass_url' => 'Dib u habeynta erayga sirta ah ee URL', @@ -57,8 +57,8 @@ return [ 'email_logo' => 'Email Logo', 'barcode_type' => 'Nooca Barcode 2D', 'alt_barcode_type' => '1D nooca barcode', - 'email_logo_size' => 'Square logos in email look best. ', - 'enabled' => 'Enabled', + 'email_logo_size' => 'Calaamadaha labajibbaaran ee iimaylka ayaa u muuqda kuwa ugu fiican. ', + 'enabled' => 'La dajiyay', 'eula_settings' => 'Dejinta EULA', 'eula_markdown' => 'EULA-dani waxay ogolaataa Github calaamadaynta dhadhanka.', 'favicon' => 'Favicon', @@ -67,7 +67,7 @@ return [ 'footer_text' => 'Qoraal Footer Dheeraad ah ', 'footer_text_help' => 'Qoraalkani waxa uu ka soo bixi doona cagtiisa midig. Isku xirka waa la ogol yahay isticmaalka Github calaamadaynta dhadhanka. Xadhka goosashada, madaxa, sawirada, iwm waxay keeni karaan natiijooyin aan la saadaalin karin.', 'general_settings' => 'Goobaha Guud', - 'general_settings_keywords' => 'company support, signature, acceptance, email format, username format, images, per page, thumbnail, eula, gravatar, tos, dashboard, privacy', + 'general_settings_keywords' => 'taageerada shirkadda, saxeexa, aqbalaadda, qaabka iimaylka, qaabka adeegsadaha, sawirada, bog kasta, thumbnail, eula, gravatar, tos, dashboard, sir', 'general_settings_help' => 'EULA asalka ah iyo qaar kaloo badan', 'generate_backup' => 'Samee kaabta', 'google_workspaces' => 'Goobaha shaqada Google', @@ -77,8 +77,8 @@ return [ 'label_logo_size' => 'Calaamadaha labajibbaaran waxay u muuqdaan kuwa ugu fiican - waxaa lagu muujin doonaa midigta sare ee calaamad kasta oo hanti ah. ', 'laravel' => 'Nooca Laravel', 'ldap' => 'LDAP', - 'ldap_default_group' => 'Default Permissions Group', - 'ldap_default_group_info' => 'Select a group to assign to newly synced users. Remember that a user takes on the permissions of the group they are assigned.', + 'ldap_default_group' => 'Kooxda Ogolaanshaha Hore', + 'ldap_default_group_info' => 'Dooro koox si aad ugu meelayso isticmaalayaasha cusub ee la habeeyey. Xusuusnow in isticmaaluhu uu qaato oggolaanshaha kooxda loo xilsaaray.', 'no_default_group' => 'No Default Group', 'ldap_help' => 'LDAP/Hagaha Firfircoon', 'ldap_client_tls_key' => 'Furaha TLS ee macmiilka LDAP', @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Laba-Arag is-diiwaangelin', 'two_factor_enabled_text' => 'Daar Laba Qodob', 'two_factor_reset' => 'Dib u deji sirta Laba-Arrin', - 'two_factor_reset_help' => 'Tani waxay ku qasbi doontaa isticmaalaha inuu mar labaad ku diwaangeliyo qalabkooda Google Authenticator. Tani waxay noqon kartaa mid faa\'iido leh haddii qalabkooda hadda ka diiwaangashan uu lumo ama la xado. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Laba arrimood ayaa si guul leh dib u dajiyay', 'two_factor_reset_error' => 'Dib u dejintii qalabka laba qodob ayaa guuldarraystay', 'two_factor_enabled_warning' => 'Awood u yeelashada laba arrimood haddii aan hadda la hawlgelin waxay isla markaaba kugu qasbi doontaa inaad ku caddeyso aaladda Google Auth ee diiwaangashan. Waxaad yeelan doontaa awood aad ku diwaangeliso qalabkaaga haddii aanu mid hadda diiwaan gashanayn.', @@ -288,18 +288,18 @@ return [ 'oauth_title' => 'OAuth API Settings', 'oauth' => 'OAuth', 'oauth_help' => 'Oauth Endpoint Settings', - 'asset_tag_title' => 'Update Asset Tag Settings', - 'barcode_title' => 'Update Barcode Settings', + 'asset_tag_title' => 'Cusbooneysii Settings Tag Asset', + 'barcode_title' => 'Cusbooneysii Settings Barcode', 'barcodes' => 'Barcodes', 'barcodes_help_overview' => 'Barcode & Dejinta QR', - 'barcodes_help' => 'This will attempt to delete cached barcodes. This would typically only be used if your barcode settings have changed, or if your Snipe-IT URL has changed. Barcodes will be re-generated when accessed next.', - 'barcodes_spinner' => 'Attempting to delete files...', - 'barcode_delete_cache' => 'Delete Barcode Cache', - 'branding_title' => 'Update Branding Settings', - 'general_title' => 'Update General Settings', - 'mail_test' => 'Send Test', - 'mail_test_help' => 'This will attempt to send a test mail to :replyto.', - 'filter_by_keyword' => 'Filter by setting keyword', + 'barcodes_help' => 'Tani waxay isku dayi doontaa inay tirtirto barcode-yada kaydsan Tani caadi ahaan waxa kaliya oo la isticmaali karaa haddii habaynka koodhkaagu uu isbedelay, ama haddii URL-ka Snipe-IT uu isbedelay. Barcodes dib ayaa loo soo saari doonaa marka xigta la galo.', + 'barcodes_spinner' => 'Isku day inaad tirtirto faylasha...', + 'barcode_delete_cache' => 'Tirtir Barcode Cache', + 'branding_title' => 'Cusbooneysii Settings Barcode', + 'general_title' => 'Cusbooneysii Settings Guud', + 'mail_test' => 'Dir Imtixaan', + 'mail_test_help' => 'Tani waxay isku dayi doontaa inay u dirto boostada tijaabada ah: replyto.', + 'filter_by_keyword' => 'Ku shaandhee adigoo dejinaya erayga muhiimka ah', 'security' => 'Security', 'security_title' => 'Update Security Settings', 'security_keywords' => 'password, passwords, requirements, two factor, two-factor, common passwords, remote login, logout, authentication', diff --git a/resources/lang/so-SO/admin/settings/message.php b/resources/lang/so-SO/admin/settings/message.php index fd00fe02b0..9a30194c80 100644 --- a/resources/lang/so-SO/admin/settings/message.php +++ b/resources/lang/so-SO/admin/settings/message.php @@ -12,7 +12,7 @@ return [ 'generated' => 'Fayl cusub oo gurmad ah ayaa si guul leh loo abuuray', 'file_not_found' => 'Faylkaas kaydka ah ayaa laga waayay seerfarka.', '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' => 'Are you sure you wish to restore your database from :filename?' + 'restore_confirm' => 'Ma hubtaa inaad rabto inaad ka soo celiso xogtaada: filename?' ], 'purge' => [ 'error' => 'Khalad ayaa dhacay markii la nadiifinayo ', @@ -20,27 +20,27 @@ return [ 'success' => 'Diiwaanada la tirtiray ayaa si guul leh loo nadiifiyay', ], 'mail' => [ - 'sending' => 'Sending Test Email...', + 'sending' => 'Diraya Iimayl tijaabo ah...', 'success' => 'Boostada waa la soo diray!', - 'error' => 'Mail could not be sent.', - 'additional' => 'No additional error message provided. Check your mail settings and your app log.' + 'error' => 'Email lama diri karo.', + 'additional' => 'Ma jiro fariin khalad ah oo dheeri ah oo la bixiyay Hubi dejimahaaga fariimaha iyo logkaaga abka.' ], 'ldap' => [ - 'testing' => 'Testing LDAP Connection, Binding & Query ...', - '500' => '500 Server Error. Please check your server logs for more information.', - 'error' => 'Something went wrong :(', - 'sync_success' => 'A sample of 10 users returned from the LDAP server based on your settings:', - 'testing_authentication' => 'Testing LDAP Authentication...', - 'authentication_success' => 'User authenticated against LDAP successfully!' + 'testing' => 'Tijaabinta Xidhiidhka LDAP, Ku xidhka & Weydiinta...', + '500' => '500 Cilad Server Fadlan hubi diiwaanka server-kaaga wixii macluumaad dheeraad ah.', + 'error' => 'Waxbaa qaldamay :(', + 'sync_success' => 'Muunad 10 isticmaale ah ayaa laga soo celiyay server-ka LDAP iyadoo lagu salaynayo habayntaada:', + 'testing_authentication' => 'Tijaabi aqoonsiga LDAP...', + 'authentication_success' => 'Isticmaaluhu wuxuu ka xaqiijiyay LDAP si guul leh!' ], 'webhook' => [ - 'sending' => 'Sending :app test message...', - 'success' => 'Your :webhook_name Integration works!', - 'success_pt1' => 'Success! Check the ', - 'success_pt2' => ' channel for your test message, and be sure to click SAVE below to store your settings.', - '500' => '500 Server Error.', - 'error' => 'Something went wrong. :app responded with: :error_message', - 'error_redirect' => 'ERROR: 301/302 :endpoint returns a redirect. For security reasons, we don’t follow redirects. Please use the actual endpoint.', - 'error_misc' => 'Something went wrong. :( ', + 'sending' => 'Diraya :app fariinta tijaabada abka...', + 'success' => 'Magacaaga:webhook_name Isdhexgalka wuu shaqeeyaa!', + 'success_pt1' => 'Guul! Hubi ', + 'success_pt2' => ' kanaalka fariinta tijaabada ah, oo hubi inaad gujiso SAVE xagga hoose si aad u kaydiso dejintaada.', + '500' => '500 Cilad Server.', + 'error' => 'Waxbaa qaldamay. :app waxa uu kaga jawaabay: : error_message', + 'error_redirect' => 'CILAD: 301/302 :endpoint Sababo ammaan dartood, ma raacno dib u jiheynta Fadlan isticmaal barta dhamaadka dhabta ah.', + 'error_misc' => 'Waxbaa qaldamay. :( ', ] ]; diff --git a/resources/lang/so-SO/admin/statuslabels/message.php b/resources/lang/so-SO/admin/statuslabels/message.php index 838387be5b..6aad795b56 100644 --- a/resources/lang/so-SO/admin/statuslabels/message.php +++ b/resources/lang/so-SO/admin/statuslabels/message.php @@ -3,7 +3,7 @@ return [ 'does_not_exist' => 'Summada heerka ma jirto.', - 'deleted_label' => 'Deleted Status Label', + 'deleted_label' => 'Summada heerka la tirtiray', 'assoc_assets' => 'Summada heerkan hadda waxa lala xidhiidhiyaa ugu yaraan hal Hanti lamana tirtiri karo. Fadlan cusboonaysii hantidaada si aanay mar dambe tixraacin heerkan oo isku day mar kale. ', 'create' => [ diff --git a/resources/lang/so-SO/admin/users/general.php b/resources/lang/so-SO/admin/users/general.php index a9f93d9a93..fbfa8c249b 100644 --- a/resources/lang/so-SO/admin/users/general.php +++ b/resources/lang/so-SO/admin/users/general.php @@ -35,7 +35,7 @@ return [ 'superadmin_permission_warning' => 'Kaliya superadmins ayaa siin kara isticmaale superadmin gelitaanka.', 'admin_permission_warning' => 'Kaliya isticmaalayaasha leh xuquuqda admins ama ka weyn ayaa siin kara marin u helka isticmaalaha.', 'remove_group_memberships' => 'Ka saar Xubinnimada Kooxda', - 'warning_deletion_information' => 'You are about to checkin ALL items from the :count user(s) listed below. Super admin names are highlighted in red.', + 'warning_deletion_information' => 'Waxaad ku dhowdahay inaad iska hubiso DHAMMAAN walxaha :count isticmaalayaasha hoos ku taxan. Magacyada maamulka sare waxa lagu iftiimiyay casaan.', 'update_user_assets_status' => 'Cusbooneysii dhammaan hantida isticmaalayaashan heerkan', 'checkin_user_properties' => 'Hubi dhammaan guryaha la xidhiidha isticmaalayaashan', 'remote_label' => 'Kani waa isticmaale fog', diff --git a/resources/lang/so-SO/admin/users/message.php b/resources/lang/so-SO/admin/users/message.php index 77eab08e6b..97c6d3a507 100644 --- a/resources/lang/so-SO/admin/users/message.php +++ b/resources/lang/so-SO/admin/users/message.php @@ -42,10 +42,10 @@ return array( 'asset_already_accepted' => 'Hantidan mar hore waa la aqbalay.', 'accept_or_decline' => 'Waa inaad aqbashaa ama diiddaa hantidan.', 'incorrect_user_accepted' => 'Hantida aad isku dayday inaad aqbasho adiga laguma hubin.', - 'ldap_could_not_connect' => 'Could not connect to the LDAP server. Please check your LDAP server configuration in the LDAP config file.
Error from LDAP Server:', - 'ldap_could_not_bind' => 'Could not bind to the LDAP server. Please check your LDAP server configuration in the LDAP config file.
Error from LDAP Server: ', - 'ldap_could_not_search' => 'Could not search the LDAP server. Please check your LDAP server configuration in the LDAP config file.
Error from LDAP Server:', - 'ldap_could_not_get_entries' => 'Could not get entries from the LDAP server. Please check your LDAP server configuration in the LDAP config file.
Error from LDAP Server:', + 'ldap_could_not_connect' => 'Waa lagu xidhi kari waayay serfarka LDAP Fadlan ka hubi server-kaaga LDAP ee ku jira faylka habaynta LDAP. Khalad ka yimid Server LDAP:', + 'ldap_could_not_bind' => 'Laguma xidhi karo serfarka LDAP Fadlan ka hubi server-kaaga LDAP ee ku jira faylka habaynta LDAP.
Khalad ka yimid Server LDAP: ', + 'ldap_could_not_search' => 'Ma baadhi karin server-ka LDAP Fadlan ka hubi server-kaaga LDAP ee ku jira faylka habaynta LDAP.
Khalad ka yimid Server LDAP:', + 'ldap_could_not_get_entries' => 'Waa lagu xidhi kari waayay serfarka LDAP Fadlan ka hubi server-kaaga LDAP ee ku jira faylka habaynta LDAP. Khalad ka yimid Server LDAP:', 'password_ldap' => 'Furaha koontada waxaa maamula LDAP/Hagaha Firfircoon. Fadlan la xidhiidh waaxda IT-ga si aad u bedesho eraygaaga sirta ah. ', ), diff --git a/resources/lang/so-SO/admin/users/table.php b/resources/lang/so-SO/admin/users/table.php index 94c49b0cba..8ede4e2563 100644 --- a/resources/lang/so-SO/admin/users/table.php +++ b/resources/lang/so-SO/admin/users/table.php @@ -2,7 +2,7 @@ return array( 'activated' => 'Firfircoon', - 'allow' => 'Allow', + 'allow' => 'Oggolow', 'checkedout' => 'Hantida', 'created_at' => 'Abuuray', 'createuser' => 'Abuur isticmaale', @@ -21,7 +21,7 @@ return array( 'manager' => 'Maareeyaha', 'managed_locations' => 'Goobaha la maamulay', 'name' => 'Magaca', - 'nogroup' => 'No groups have been created yet. To add one, visit: ', + 'nogroup' => 'Weli kooxo lama abuurin Si aad mid ugu darto, booqo: ', 'notes' => 'Xusuusin', 'password_confirm' => 'Xaqiiji erayga sirta ah', 'password' => 'Password-ka', diff --git a/resources/lang/so-SO/general.php b/resources/lang/so-SO/general.php index 3f14b8414f..121d7c4d01 100644 --- a/resources/lang/so-SO/general.php +++ b/resources/lang/so-SO/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Agabka', 'activated' => 'Hawl galiyay', 'accepted_date' => 'Taariikhda la aqbalay', @@ -518,4 +519,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/so-SO/localizations.php b/resources/lang/so-SO/localizations.php index 28edcb4221..79f6d2a1b3 100644 --- a/resources/lang/so-SO/localizations.php +++ b/resources/lang/so-SO/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Seerbiyaan (Laatiin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Islovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Isbaanish', 'es-CO'=> 'Isbaanish, Kolombiya', 'es-MX'=> 'Isbaanish, Mexico', diff --git a/resources/lang/so-SO/validation.php b/resources/lang/so-SO/validation.php index f2180ae007..aee37fac3d 100644 --- a/resources/lang/so-SO/validation.php +++ b/resources/lang/so-SO/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Qiimuhu ma noqon karo mid xun' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/sr-CS/admin/settings/general.php b/resources/lang/sr-CS/admin/settings/general.php index 271cba7542..ae63dac16f 100644 --- a/resources/lang/sr-CS/admin/settings/general.php +++ b/resources/lang/sr-CS/admin/settings/general.php @@ -261,11 +261,7 @@ return [ 'two_factor_enrollment' => 'Dvofaktorska prijava', 'two_factor_enabled_text' => 'Omoguci dvofaktorsku proveru identiteta', 'two_factor_reset' => 'Resetuj dvofaktorski ključ', - 'two_factor_reset_help' => 'Ovo će primorati korisnika da ponovo registruje svoj uređaj u Google Authenticator. Ovo može biti korisno ako je njihov trenutno registrovan uređaj izgubljen ili ukraden. - - - - ', + 'two_factor_reset_help' => 'Ovo će primorati korisnika da ponovo registruje svoj uređaj u aplikaciji za autentifikaciju. Ovo može biti korisno ako je njihov trenutno registrovan uređaj izgubljen ili ukraden. ', 'two_factor_reset_success' => 'Dvofaktorski uređaj je uspešno resetovan', 'two_factor_reset_error' => 'Resetovanje uređaja sa dva faktora nije uspelo', 'two_factor_enabled_warning' => 'Omogućavanje dvofaktorske autentifikacije, ako trenutno nije omogućeno, odmah će vas primorati da se autentifikujete pomoću uređaja koji je registrovan za Google Auth. Imaćete mogućnost da registrujete svoj uređaj ako trenutno nije prijavljen.', diff --git a/resources/lang/sr-CS/general.php b/resources/lang/sr-CS/general.php index f15c23c390..5e877262c5 100644 --- a/resources/lang/sr-CS/general.php +++ b/resources/lang/sr-CS/general.php @@ -1,6 +1,7 @@ 'Resetovanje 2FA', 'accessories' => 'Dodatna oprema', 'activated' => 'Aktiviran', 'accepted_date' => 'Datum preuzimanja', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Nema imovine ili modela imovine koji se mogu zatražiti.', + 'countable' => [ + 'accessories' => ':count pribor|:count pribora', + 'assets' => ':count imovina|:count imovina', + 'licenses' => ':count licenca|:count licenci', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count potrošni materijal|:count potrošnih materijala', + 'components' => ':count komponenta|:count komponenti', + ] + ]; diff --git a/resources/lang/sr-CS/localizations.php b/resources/lang/sr-CS/localizations.php index 833b4f197f..fdca53b7c7 100644 --- a/resources/lang/sr-CS/localizations.php +++ b/resources/lang/sr-CS/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Srpski (Latinica)', 'sk-SK'=> 'Slovački', 'sl-SI'=> 'Slovenački', + 'so-SO'=> 'Somalski', 'es-ES'=> 'Španski', 'es-CO'=> 'Španski (Kolumbija)', 'es-MX'=> 'Španski (Meksiko)', diff --git a/resources/lang/sr-CS/validation.php b/resources/lang/sr-CS/validation.php index edb19a84e3..eacadee0f2 100644 --- a/resources/lang/sr-CS/validation.php +++ b/resources/lang/sr-CS/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Vrednost ne može biti negativna' ], + 'checkboxes' => ':attribute sadrži neispravne opcije.', + 'radio_buttons' => ':attribute je neispravan.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Neispravna vrednost je sadržana u ovom polju', ]; diff --git a/resources/lang/sv-SE/admin/settings/general.php b/resources/lang/sv-SE/admin/settings/general.php index 987d10a0b1..91074ea407 100644 --- a/resources/lang/sv-SE/admin/settings/general.php +++ b/resources/lang/sv-SE/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Tvåfaktorsregistrering', 'two_factor_enabled_text' => 'Aktivera tvåfaktorsautentisering', 'two_factor_reset' => 'Återställ tvåfaktorshemlighet', - 'two_factor_reset_help' => 'Detta kommer att tvinga användaren att anmäla sin enhet med Google Authenticator igen. Detta kan vara användbart om den för närvarande inskrivna enheten är förlorad eller stulen.', + 'two_factor_reset_help' => 'Detta kommer att tvinga användaren att registrera sin enhet med sin autentiseringsapp igen. Detta kan vara användbart om deras nuvarande inskrivna enhet är förlorad eller stulen. ', 'two_factor_reset_success' => 'Tvåfaktorsenheten har återställts', 'two_factor_reset_error' => 'Återställningen av tvåfelsenhet misslyckades', 'two_factor_enabled_warning' => 'Aktivering av tvåfaktorn om den inte är aktiverad för tillfället tvingar dig omedelbart att verifiera med en Google Auth-registrerad enhet. Du kommer att ha möjlighet att registrera din enhet om du inte är inloggad för närvarande.', diff --git a/resources/lang/sv-SE/general.php b/resources/lang/sv-SE/general.php index 74ba5e08f4..17db23a4a9 100644 --- a/resources/lang/sv-SE/general.php +++ b/resources/lang/sv-SE/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Tillbehör', 'activated' => 'Aktiverad', 'accepted_date' => 'Datum Accepterat', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Det finns inga begärbara tillgångar eller tillgångsmodeller.', + 'countable' => [ + 'accessories' => ':count Tillbehör :count Tillbehör', + 'assets' => ':count Tillgång:count Tillgångar', + 'licenses' => ':count License :count Licenser', + 'license_seats' => ':count License Seat :count License Seats', + 'consumables' => ':count Förbrukningsmedel :count Förbrukningsvaror', + 'components' => ':count Component|:count Komponenter', + ] + ]; diff --git a/resources/lang/sv-SE/localizations.php b/resources/lang/sv-SE/localizations.php index 68256c169c..2dc003fe78 100644 --- a/resources/lang/sv-SE/localizations.php +++ b/resources/lang/sv-SE/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbiska (latinsk)', 'sk-SK'=> 'Slovakiska', 'sl-SI'=> 'Slovenska', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanska', 'es-CO'=> 'Spanska, Colombia', 'es-MX'=> 'Spanska, Mexiko', diff --git a/resources/lang/sv-SE/validation.php b/resources/lang/sv-SE/validation.php index b08001f037..f7ca0a6b41 100644 --- a/resources/lang/sv-SE/validation.php +++ b/resources/lang/sv-SE/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Värdet kan inte vara negativ' ], + 'checkboxes' => ':attribute innehåller ogiltiga alternativ.', + 'radio_buttons' => ':attribute är ogiltigt.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Ogiltigt värde som ingår i detta fält', ]; diff --git a/resources/lang/ta-IN/admin/settings/general.php b/resources/lang/ta-IN/admin/settings/general.php index d0f1ea265b..dfa4f3c121 100644 --- a/resources/lang/ta-IN/admin/settings/general.php +++ b/resources/lang/ta-IN/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'இரண்டு காரணி பதிவு', 'two_factor_enabled_text' => 'இரு காரணி இயக்கு', 'two_factor_reset' => 'இரண்டு காரணி இரகசியத்தை மீட்டமை', - 'two_factor_reset_help' => 'இது மீண்டும் தங்கள் சாதனத்தை Google Authenticator உடன் பதிவு செய்யும்படி கட்டாயப்படுத்தும். அவர்கள் தற்போது பதிவுசெய்யப்பட்ட சாதனம் தொலைந்து அல்லது திருடப்பட்டால் இது பயனுள்ளதாக இருக்கும்.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'இரண்டு காரணி சாதனம் வெற்றிகரமாக மீட்டமைக்கப்பட்டது', 'two_factor_reset_error' => 'இரண்டு காரணி சாதன மீட்டமைப்பு தோல்வியடைந்தது', 'two_factor_enabled_warning' => 'தற்போது இயங்கவில்லையெனில் இரண்டு-காரணி செயல்படுத்துவதால், உடனடியாக Google Auth பதிவுசெய்யப்பட்ட சாதனத்துடன் அங்கீகரிக்கும்படி கட்டாயப்படுத்தும். ஒருவர் தற்போது பதிவுசெய்யப்படவில்லை என்றால், உங்கள் சாதனம் பதிவுசெய்யும் திறனை நீங்கள் பெறுவீர்கள்.', diff --git a/resources/lang/ta-IN/general.php b/resources/lang/ta-IN/general.php index f7257dee56..6a9789dd39 100644 --- a/resources/lang/ta-IN/general.php +++ b/resources/lang/ta-IN/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'கருவிகள்', 'activated' => 'இயக்கப்பட்டது', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ta-IN/localizations.php b/resources/lang/ta-IN/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/ta-IN/localizations.php +++ b/resources/lang/ta-IN/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ta-IN/validation.php b/resources/lang/ta-IN/validation.php index e563436a16..714504cbb9 100644 --- a/resources/lang/ta-IN/validation.php +++ b/resources/lang/ta-IN/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/th-TH/admin/settings/general.php b/resources/lang/th-TH/admin/settings/general.php index b8ff49e5c7..aa13dbcb20 100644 --- a/resources/lang/th-TH/admin/settings/general.php +++ b/resources/lang/th-TH/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'การลงทะเบียนสองปัจจัย', 'two_factor_enabled_text' => 'เปิดใช้งาน Two Factor', 'two_factor_reset' => 'รีเซ็ตความลับสองระดับ', - 'two_factor_reset_help' => 'การดำเนินการนี้จะบังคับให้ผู้ใช้ลงทะเบียนอุปกรณ์ด้วย Google Authenticator อีกครั้ง วิธีนี้มีประโยชน์หากอุปกรณ์ที่ลงทะเบียนเรียนในปัจจุบันสูญหายหรือถูกขโมย', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'รีเซ็ตเครื่องอุปกรณ์สองตัวเรียบร้อยแล้ว', 'two_factor_reset_error' => 'การรีเซ็ตอุปกรณ์สององค์ประกอบล้มเหลว', 'two_factor_enabled_warning' => 'การเปิดใช้งานสองปัจจัยหากไม่ได้เปิดใช้อยู่ในขณะนี้จะบังคับให้คุณตรวจสอบสิทธิ์ด้วยอุปกรณ์ที่ลงทะเบียนของ Google Auth คุณจะสามารถลงทะเบียนอุปกรณ์ของคุณหากยังไม่ได้ลงทะเบียนเรียน', diff --git a/resources/lang/th-TH/general.php b/resources/lang/th-TH/general.php index 73ea3bea3b..2423d2a892 100644 --- a/resources/lang/th-TH/general.php +++ b/resources/lang/th-TH/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'อุปกรณ์', 'activated' => 'เปิดใช้งาน', 'accepted_date' => 'ข้อมูลที่ได้รับการยอมรับแล้ว', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/th-TH/localizations.php b/resources/lang/th-TH/localizations.php index 38c061ffcc..37cc2ebdf6 100644 --- a/resources/lang/th-TH/localizations.php +++ b/resources/lang/th-TH/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/th-TH/validation.php b/resources/lang/th-TH/validation.php index fb4e907621..9b7e7c2cf4 100644 --- a/resources/lang/th-TH/validation.php +++ b/resources/lang/th-TH/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/tl-PH/admin/settings/general.php b/resources/lang/tl-PH/admin/settings/general.php index 185dd954e4..9963b5bdb5 100644 --- a/resources/lang/tl-PH/admin/settings/general.php +++ b/resources/lang/tl-PH/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/tl-PH/general.php b/resources/lang/tl-PH/general.php index 0785a22c23..3867bc2e8b 100644 --- a/resources/lang/tl-PH/general.php +++ b/resources/lang/tl-PH/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/tl-PH/localizations.php b/resources/lang/tl-PH/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/tl-PH/localizations.php +++ b/resources/lang/tl-PH/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/tl-PH/validation.php b/resources/lang/tl-PH/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/tl-PH/validation.php +++ b/resources/lang/tl-PH/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/tr-TR/admin/settings/general.php b/resources/lang/tr-TR/admin/settings/general.php index ac84ef2c6e..5546d3e903 100644 --- a/resources/lang/tr-TR/admin/settings/general.php +++ b/resources/lang/tr-TR/admin/settings/general.php @@ -262,7 +262,7 @@ return [ 'two_factor_enrollment' => 'İki Aşamalı Kayıt', 'two_factor_enabled_text' => 'İki Aşamalı Şifrelemeyi Etkinleştir', 'two_factor_reset' => 'Gizli İki Aşamalı Şifrelemeyi Sıfırla', - 'two_factor_reset_help' => 'Bu işlem, kullanıcıyı cihazlarını Google Authenticator ile tekrar kayıt etmeye zorlar. Bu, kayıtlı cihazlarının kaybolması veya çalınması durumunda yararlı olabilir. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'İki aşamalı aygıt başarıyla sıfırlandı', 'two_factor_reset_error' => 'İki aşamalı aygıt sıfırlanamadı', 'two_factor_enabled_warning' => 'Halihazırda etkinleştirilmemişse iki aşamalı şifreleme etkinleştirilmesi sizi bir Google Auth kayıtlı cihazla yetkilendirmenizi zorlar. Şu an kayıtlı değilseniz, cihazınızı kaydetme olanağına sahip olacaksınız.', diff --git a/resources/lang/tr-TR/general.php b/resources/lang/tr-TR/general.php index 3e488d191a..eb36497f8a 100644 --- a/resources/lang/tr-TR/general.php +++ b/resources/lang/tr-TR/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Aksesuarlar', 'activated' => 'Aktif edildi', 'accepted_date' => 'Kabul edilme günü', @@ -522,4 +523,13 @@ Context | Request Context ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/tr-TR/localizations.php b/resources/lang/tr-TR/localizations.php index e41e1f7c9c..3361e826be 100644 --- a/resources/lang/tr-TR/localizations.php +++ b/resources/lang/tr-TR/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Sırpça (Latin)', 'sk-SK'=> 'Slovakça', 'sl-SI'=> 'Slovakça', + 'so-SO'=> 'Somali', 'es-ES'=> 'İspanyolca', 'es-CO'=> 'İspanyolca, Kolombiya', 'es-MX'=> 'İspanyolca, Meksika', diff --git a/resources/lang/tr-TR/validation.php b/resources/lang/tr-TR/validation.php index d8442f6ef2..7f3a648fa0 100644 --- a/resources/lang/tr-TR/validation.php +++ b/resources/lang/tr-TR/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Değer negatif olamaz' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/uk-UA/admin/settings/general.php b/resources/lang/uk-UA/admin/settings/general.php index 0802fa7791..69382851df 100644 --- a/resources/lang/uk-UA/admin/settings/general.php +++ b/resources/lang/uk-UA/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Двофакторна участь', 'two_factor_enabled_text' => 'Увімкнути двофакторну автентифікацію', 'two_factor_reset' => 'Скинути двофакторну аутентифікацію', - 'two_factor_reset_help' => 'Це змусить користувача знову записувати їх пристрій за допомогою Google Authenticator. Це може бути корисно, якщо зараз їх загублено або вкрадено в даний час. ', + 'two_factor_reset_help' => 'Це змусить користувача зареєструвати їх пристрій за допомогою програми авторизації знову. Це може бути корисно, якщо зараз їх загублено або вкрадено в даний час. ', 'two_factor_reset_success' => 'Двофакторний пристрій успішно скинуто', 'two_factor_reset_error' => 'Не вдалося скинути двофакторний пристрій', 'two_factor_enabled_warning' => 'Включення двофакторної аутентифікації, якщо це поки що не ввімкнуто негайно змусить вас автентифікуватися з пристроєм з Google Auth. Ви матимете можливість записувати ваш пристрій, якщо він ще не зареєстрований.', diff --git a/resources/lang/uk-UA/general.php b/resources/lang/uk-UA/general.php index b9a6498a28..2e5443ed8f 100644 --- a/resources/lang/uk-UA/general.php +++ b/resources/lang/uk-UA/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Аксесуари', 'activated' => 'Активоване', 'accepted_date' => 'Дата прийняття', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'Немає запитуваних активів або моделей активів.', + 'countable' => [ + 'accessories' => ':count аксесуара|:count аксесуарів', + 'assets' => ':count есе|:count Активів', + 'licenses' => ':count ліцензія|:count ліцензій', + 'license_seats' => ':count реалізація|:count місця для ліцензії', + 'consumables' => ':count витратно|:count витратних товарів', + 'components' => ':count компонент|:count компонентів', + ] + ]; diff --git a/resources/lang/uk-UA/localizations.php b/resources/lang/uk-UA/localizations.php index 9b8ad497d9..be71c22d9d 100644 --- a/resources/lang/uk-UA/localizations.php +++ b/resources/lang/uk-UA/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Сербська (латиниця)', 'sk-SK'=> 'Словацька', 'sl-SI'=> 'Словенська', + 'so-SO'=> 'Somali', 'es-ES'=> 'Іспанська', 'es-CO'=> 'Іспанська, Колумбія', 'es-MX'=> 'Іспанська, Мексика', diff --git a/resources/lang/uk-UA/validation.php b/resources/lang/uk-UA/validation.php index 2c06f5c7a4..c758303444 100644 --- a/resources/lang/uk-UA/validation.php +++ b/resources/lang/uk-UA/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Значення не може бути від’ємним' ], + 'checkboxes' => ':attribute містить неприпустимі параметри.', + 'radio_buttons' => ':attribute є неприпустимим.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Невірне значення включене в це поле', ]; diff --git a/resources/lang/ur-PK/admin/settings/general.php b/resources/lang/ur-PK/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/ur-PK/admin/settings/general.php +++ b/resources/lang/ur-PK/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/ur-PK/general.php b/resources/lang/ur-PK/general.php index d879ef7db3..9f9a0e08c7 100644 --- a/resources/lang/ur-PK/general.php +++ b/resources/lang/ur-PK/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/ur-PK/localizations.php b/resources/lang/ur-PK/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/ur-PK/localizations.php +++ b/resources/lang/ur-PK/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/ur-PK/validation.php b/resources/lang/ur-PK/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/ur-PK/validation.php +++ b/resources/lang/ur-PK/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/vi-VN/admin/accessories/message.php b/resources/lang/vi-VN/admin/accessories/message.php index 914a6ffc35..fb50f7feda 100644 --- a/resources/lang/vi-VN/admin/accessories/message.php +++ b/resources/lang/vi-VN/admin/accessories/message.php @@ -3,7 +3,7 @@ return array( 'does_not_exist' => 'Phụ kiện [:id] Không tồn tại.', - 'not_found' => 'That accessory was not found.', + 'not_found' => 'Phụ kiện không được tìm thấy.', 'assoc_users' => 'Phụ kiện này hiện có :count cái đã giao cho người dùng. Bạn hãy nhập lại vào trong phần phụ kiện và thử lại lần nữa. ', 'create' => array( @@ -25,7 +25,7 @@ return array( 'checkout' => array( 'error' => 'Phụ kiện chưa được xuất kho. Bạn hãy thử lại', 'success' => 'Phụ kiện được xuất kho thành công.', - 'unavailable' => 'Accessory is not available for checkout. Check quantity available', + 'unavailable' => 'Không có sẵn phụ kiện để xuất. Hãy kiểm tra số lượng có sẵn', 'user_does_not_exist' => 'Người dùng này không tồn tại. Bạn hãy thử lại.' ), diff --git a/resources/lang/vi-VN/admin/locations/table.php b/resources/lang/vi-VN/admin/locations/table.php index d24c70cd59..b03d71c050 100644 --- a/resources/lang/vi-VN/admin/locations/table.php +++ b/resources/lang/vi-VN/admin/locations/table.php @@ -15,7 +15,7 @@ return [ 'print_all_assigned' => 'In tất cả tài sản đã cấp phát', 'name' => 'Tên địa phương', 'address' => 'Địa chỉ', - 'address2' => 'Address Line 2', + 'address2' => 'Địa chỉ thứ 2', 'zip' => 'Mã bưu điện', 'locations' => 'Địa phương', 'parent' => 'Parent', diff --git a/resources/lang/vi-VN/admin/settings/general.php b/resources/lang/vi-VN/admin/settings/general.php index e7eb82045f..9ffd502828 100644 --- a/resources/lang/vi-VN/admin/settings/general.php +++ b/resources/lang/vi-VN/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Đăng ký Hai nhân tố', 'two_factor_enabled_text' => 'Kích hoạt hai yếu tố', 'two_factor_reset' => 'Đặt lại Hai yếu tố bí mật', - 'two_factor_reset_help' => 'Thao tác này sẽ bắt buộc người dùng đăng ký lại thiết bị của họ bằng Google Authenticator. Điều này có thể hữu ích nếu thiết bị đang học của họ bị mất hoặc bị đánh cắp.', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Thiết lập thành công hai yếu tố', 'two_factor_reset_error' => 'Thiết lập lại thiết bị hai yếu tố không thành công', 'two_factor_enabled_warning' => 'Bật hai yếu tố nếu hiện tại không được bật sẽ buộc bạn phải xác thực ngay lập tức bằng thiết bị được đăng ký Google Auth. Bạn sẽ có khả năng đăng ký thiết bị của bạn nếu một trong số đó hiện không đăng ký.', diff --git a/resources/lang/vi-VN/general.php b/resources/lang/vi-VN/general.php index 2144af9ec7..7bf9301610 100644 --- a/resources/lang/vi-VN/general.php +++ b/resources/lang/vi-VN/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Phụ kiện', 'activated' => 'Kích hoạt', 'accepted_date' => 'Ngày chấp nhận', @@ -72,8 +73,8 @@ return [ 'consumable' => 'Vật tư phụ', 'consumables' => 'Vật tư phụ', 'country' => 'Nước', - 'could_not_restore' => 'Error restoring :item_type: :error', - 'not_deleted' => 'The :item_type is not deleted so it cannot be restored', + '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', 'create' => 'Tạo mới', 'created' => 'Mục đã tạo', 'created_asset' => 'tài sản đã tạo', @@ -156,7 +157,7 @@ return [ 'image_filetypes_help' => 'Các loại tệp được chấp nhận là jpg, webp, png, gif và svg. Kích thước tải lên tối đa được cho phép là :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' => 'Map fields and process this file', + 'import_this_file' => 'Các trường bản đồ và quá trình xử lý tệp này', 'importing' => 'Đang nhập', 'importing_help' => 'Bạn có thể nhập nội dung, phụ kiện, giấy phép, linh kiện, vật tư tiêu hao và người dùng qua tệp CSV.

CSV phải được phân cách bằng dấu phẩy và được định dạng với các tiêu đề khớp với các tiêu đề trong CSV trong tài liệu mẫu .', 'import-history' => 'Lịch sử Nhập khẩu', @@ -182,7 +183,7 @@ return [ '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', - 'location_plural' => 'Location|Locations', + 'location_plural' => 'Vị trí|Địa điểm', 'locations' => 'Địa phương', 'logo_size' => 'Logo hình vuông trông đẹp nhất với Logo + ký tự. Kích thước hiển thị tối đa của logo là cao 50px, rộng 500px. ', 'logout' => 'Thoát', @@ -201,7 +202,7 @@ return [ 'new_password' => 'Mật khẩu mới', 'next' => 'Tiếp', 'next_audit_date' => 'Ngày kiểm toán tiếp theo', - 'no_email' => 'No email address associated with this user', + 'no_email' => 'Không có địa chỉ email nào được liên kết với người dùng này', 'last_audit' => 'Kiểm toán Lần cuối', 'new' => 'Mới!', 'no_depreciation' => 'Không khấu hao', @@ -269,7 +270,7 @@ return [ 'state' => 'Tỉnh/Thành phố', 'status_labels' => 'Tình trạng nhãn', 'status' => 'Tình trạng', - 'accept_eula' => 'Acceptance Agreement', + 'accept_eula' => 'Chấp nhận quy định', 'supplier' => 'Nhà cung cấp', 'suppliers' => 'Nhà cung cấp', 'sure_to_delete' => 'Bạn có chắc chắn muốn xoá', @@ -293,7 +294,7 @@ return [ 'user' => 'Người dùng', 'accepted' => 'đã chấp nhận', 'declined' => 'đã từ chối', - 'unassigned' => 'Unassigned', + 'unassigned' => 'Không gán', 'unaccepted_asset_report' => 'Những tài sản không chấp nhận', 'users' => 'Người dùng', 'viewall' => 'Xem tất cả', @@ -305,8 +306,8 @@ return [ 'yes' => 'Yes', 'zip' => 'Zip', 'noimage' => 'Không tìm thấy hình ảnh hoặc hình ảnh nào được tìm thấy.', - 'file_does_not_exist' => 'The requested file does not exist on the server.', - 'file_upload_success' => 'File upload success!', + 'file_does_not_exist' => 'Tệp được yêu cầu không tồn tại trên máy chủ.', + 'file_upload_success' => 'Tải tập tin lên thành công!', 'no_files_uploaded' => 'File upload success!', 'token_expired' => 'Phiên họp mẫu của bạn đã hết hạn. Vui lòng thử lại.', 'login_enabled' => 'Cho phép đăng nhập', @@ -316,52 +317,52 @@ return [ 'i_accept' => 'Tôi đồng ý', 'i_decline' => 'Tôi từ chối', 'accept_decline' => 'Phê duyệt / Từ chối', - 'sign_tos' => 'Sign below to indicate that you agree to the terms of service:', - 'clear_signature' => 'Clear Signature', - 'show_help' => 'Show help', - 'hide_help' => 'Hide help', + 'sign_tos' => 'Ký tên bên dưới để biết rằng bạn đồng ý với các điều khoản dịch vụ:', + 'clear_signature' => 'Xóa chữ ký', + 'show_help' => 'Hiển thị trợ giúp', + 'hide_help' => 'Ẩn trợ giúp', 'view_all' => 'view all', 'hide_deleted' => 'Ẩn đã xóa', 'email' => 'Email', - 'do_not_change' => 'Do Not Change', + 'do_not_change' => 'Không được thay đổi', 'bug_report' => 'Report a Bug', - 'user_manual' => 'User\'s Manual', + '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' => 'Configuration Check', + '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_done' => 'Hoàn tất!', - 'bulk_edit_about_to' => 'You are about to edit the following: ', + 'bulk_edit_about_to' => 'Bạn đang chuẩn bị chỉnh sửa nội dung sau: ', 'checked_out' => 'Bàn giao', - 'checked_out_to' => 'Checked out to', + 'checked_out_to' => 'Đã ra khỏi khu kiểm tra', 'fields' => 'Fields', 'last_checkout' => 'Last Checkout', - 'due_to_checkin' => 'The following :count items are due to be checked in soon:', + 'due_to_checkin' => 'Sau đây :số lượng mặt hàng sắp được kiểm tra:', 'expected_checkin' => 'Ngày mong muốn Thu hồi', - 'reminder_checked_out_items' => 'This is a reminder of the items currently checked out to you. If you feel this list is inaccurate (something is missing, or something appears here that you believe you never received), please email :reply_to_name at :reply_to_address.', + 'reminder_checked_out_items' => 'Đây là lời nhắc nhở về các mục hiện đang được kiểm tra cho bạn. Nếu bạn cảm thấy danh sách này không chính xác (thiếu nội dung nào đó hoặc nội dung nào đó xuất hiện ở đây mà bạn cho rằng mình chưa bao giờ nhận được), vui lòng gửi email đến :reply_to_name tại :reply_to_address.', 'changed' => 'Đã thay đổi', 'to' => 'To', - 'report_fields_info' => '

Select the fields you would like to include in your custom report, and click Generate. The file (custom-asset-report-YYYY-mm-dd.csv) will download automatically, and you can open it in Excel.

-

If you would like to export only certain assets, use the options below to fine-tune your results.

', + 'report_fields_info' => '

Chọn các trường bạn muốn đưa vào báo cáo tùy chỉnh của mình và nhấp vào Tạo. Tệp (custom-asset-report-YYYY-mm-dd.csv) sẽ tự động tải xuống và bạn có thể mở tệp đó trong Excel.

+

Nếu bạn chỉ muốn xuất một số nội dung nhất định, hãy sử dụng các tùy chọn bên dưới để tinh chỉnh kết quả của mình.

', 'range' => 'Range', - 'bom_remark' => 'Add a BOM (byte-order mark) to this CSV', + 'bom_remark' => 'Thêm BOM (dấu thứ tự byte) vào CSV này', 'improvements' => 'Improvements', 'information' => 'Information', 'permissions' => 'Permissions', - 'managed_ldap' => '(Managed via LDAP)', + 'managed_ldap' => '(Được quản lý qua LDAP)', 'export' => 'Export', - 'ldap_sync' => 'LDAP Sync', - 'ldap_user_sync' => 'LDAP User Sync', - 'synchronize' => 'Synchronize', - 'sync_results' => 'Synchronization Results', - 'license_serial' => 'Serial/Product Key', - 'invalid_category' => 'Invalid or missing category', - 'invalid_item_category_single' => 'Invalid or missing :type category. Please update the category of this :type to include a valid category before checking out.', - 'dashboard_info' => 'This is your dashboard. There are many like it, but this one is yours.', - '60_percent_warning' => '60% Complete (warning)', + 'ldap_sync' => 'Đồng bộ hóa LDAP', + 'ldap_user_sync' => 'Đồng bộ hóa người dùng LDAP', + 'synchronize' => 'Đồng bộ', + 'sync_results' => 'Kết quả đồng bộ hóa', + 'license_serial' => 'Sê-ri/Khóa sản phẩm', + 'invalid_category' => 'Loại tài sản không hợp lệ hoặc bị thiếu', + 'invalid_item_category_single' => 'Danh mục :type không hợp lệ hoặc bị thiếu. Vui lòng cập nhật danh mục :type này để bao gồm danh mục hợp lệ trước khi thanh toán.', + 'dashboard_info' => 'Đây là bảng điều khiển của bạn. Có nhiều cái giống như vậy, nhưng cái này là của bạn.', + '60_percent_warning' => 'Hoàn thành 60% (cảnh báo)', 'dashboard_empty' => 'Có vẻ như bạn chưa thêm bất kỳ điều gì nên chúng tôi không có gì để hiển thị. Hãy bắt đầu bằng cách thêm một số nội dung, phụ kiện, vật tư tiêu hao hoặc giấy phép ngay bây giờ!', 'new_asset' => 'New Asset', 'new_license' => 'New License', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/vi-VN/localizations.php b/resources/lang/vi-VN/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/vi-VN/localizations.php +++ b/resources/lang/vi-VN/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/vi-VN/validation.php b/resources/lang/vi-VN/validation.php index e6dd0b1561..c6f30d7cbf 100644 --- a/resources/lang/vi-VN/validation.php +++ b/resources/lang/vi-VN/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Giá trị không thể âm' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/zh-CN/admin/settings/general.php b/resources/lang/zh-CN/admin/settings/general.php index 10b5805cf0..04a1fa50c1 100644 --- a/resources/lang/zh-CN/admin/settings/general.php +++ b/resources/lang/zh-CN/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => '加入两步验证', 'two_factor_enabled_text' => '启用两步验证', 'two_factor_reset' => '重设两步验证密钥', - 'two_factor_reset_help' => '此操作会强制用户再次通过 Google Authenticator 登记设备,此操作可以解决上一部移动设备丢失的问题。', + 'two_factor_reset_help' => '这将迫使用户再次选用他们的身份验证器应用程序。 如果他们目前登记的设备丢失或被盗,这样做可能是有用的。 ', 'two_factor_reset_success' => '成功重设两步验证设备', 'two_factor_reset_error' => '两步验证设备重设失败', 'two_factor_enabled_warning' => '启用两步验证将需要您立即用登记的移动设备验证身份。如您尚未设置两步验证,您现在可以登记您的设备。', diff --git a/resources/lang/zh-CN/general.php b/resources/lang/zh-CN/general.php index dceaf72327..a1a23a1556 100644 --- a/resources/lang/zh-CN/general.php +++ b/resources/lang/zh-CN/general.php @@ -1,6 +1,7 @@ '2FA(双因素认证) 重置', 'accessories' => '附属品', 'activated' => '已激活', 'accepted_date' => '接受日期', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => '没有可申领的资产或资产型号。', + 'countable' => [ + 'accessories' => ':count 配件|:count 配件', + 'assets' => ':count 资产|:count 资产', + 'licenses' => ':count 许可证|:count 许可证', + 'license_seats' => ':count 许可证席位|:count 许可证席位', + 'consumables' => ':count 耗材|:count 耗材', + 'components' => ':count 组件|:count 组件', + ] + ]; diff --git a/resources/lang/zh-CN/localizations.php b/resources/lang/zh-CN/localizations.php index b7343f1bd3..6219123977 100644 --- a/resources/lang/zh-CN/localizations.php +++ b/resources/lang/zh-CN/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> '斯洛伐克语', 'sl-SI'=> 'Slovenian', + 'so-SO'=> '索马里语', 'es-ES'=> '西班牙语', 'es-CO'=> '西班牙文(哥伦比亚)', 'es-MX'=> '西班牙文(墨西哥)', diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php index aa7f7999dc..a87a53ec0e 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => '数值不能为负数' ], + 'checkboxes' => ':attribute 包含无效的选项。', + 'radio_buttons' => ':attribute 无效。', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => '此字段中包含的值无效', ]; diff --git a/resources/lang/zh-HK/admin/settings/general.php b/resources/lang/zh-HK/admin/settings/general.php index 33cfd7b416..71fb8eb2c6 100644 --- a/resources/lang/zh-HK/admin/settings/general.php +++ b/resources/lang/zh-HK/admin/settings/general.php @@ -261,7 +261,7 @@ return [ 'two_factor_enrollment' => 'Two-Factor Enrollment', 'two_factor_enabled_text' => 'Enable Two Factor', 'two_factor_reset' => 'Reset Two-Factor Secret', - 'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => 'Two factor device successfully reset', 'two_factor_reset_error' => 'Two factor device reset failed', 'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.', diff --git a/resources/lang/zh-HK/general.php b/resources/lang/zh-HK/general.php index 10eb60ed37..1d0575ab2e 100644 --- a/resources/lang/zh-HK/general.php +++ b/resources/lang/zh-HK/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Accessories', 'activated' => 'Activated', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/zh-HK/localizations.php b/resources/lang/zh-HK/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/zh-HK/localizations.php +++ b/resources/lang/zh-HK/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/zh-HK/validation.php b/resources/lang/zh-HK/validation.php index 1c6ad8a148..05374e23af 100644 --- a/resources/lang/zh-HK/validation.php +++ b/resources/lang/zh-HK/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/zh-TW/admin/settings/general.php b/resources/lang/zh-TW/admin/settings/general.php index be62969d75..b219b83f36 100644 --- a/resources/lang/zh-TW/admin/settings/general.php +++ b/resources/lang/zh-TW/admin/settings/general.php @@ -262,7 +262,7 @@ return [ 'two_factor_enrollment' => '登記雙因素驗證', 'two_factor_enabled_text' => '啟用雙因素驗證', 'two_factor_reset' => '重設雙因素驗證', - 'two_factor_reset_help' => '此動作會強制使用者再次透過 Google Authenticator 登記行動裝置,此動作可解決原登記行動裝置遺失的問題。', + 'two_factor_reset_help' => 'This will force the user to enroll their device with their authenticator app again. This can be useful if their currently enrolled device is lost or stolen. ', 'two_factor_reset_success' => '重設雙因素驗證裝置成功', 'two_factor_reset_error' => '重設雙因素驗證裝置失敗', 'two_factor_enabled_warning' => '啟用雙因素認證將需要您立即用登記的行動裝置驗證身份。如您尚未設置雙因素認證,您現在可以登記您的設備', diff --git a/resources/lang/zh-TW/general.php b/resources/lang/zh-TW/general.php index 3a5ef31ab3..3702ed351c 100644 --- a/resources/lang/zh-TW/general.php +++ b/resources/lang/zh-TW/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => '配件', 'activated' => '已啟用', 'accepted_date' => '接受日期', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/zh-TW/localizations.php b/resources/lang/zh-TW/localizations.php index ea204de756..ac89b30746 100644 --- a/resources/lang/zh-TW/localizations.php +++ b/resources/lang/zh-TW/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => '塞爾維亞語(拉丁文)', 'sk-SK'=> 'Slovak', 'sl-SI'=> '斯洛維尼亞語', + 'so-SO'=> 'Somali', 'es-ES'=> '西班牙語', 'es-CO'=> '哥倫比亞西班牙語', 'es-MX'=> '墨西哥西班牙語', diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php index 0dcf0908a6..432e9d2817 100644 --- a/resources/lang/zh-TW/validation.php +++ b/resources/lang/zh-TW/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => '值不能為負' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/lang/zu-ZA/general.php b/resources/lang/zu-ZA/general.php index 4199667319..fba19b7755 100644 --- a/resources/lang/zu-ZA/general.php +++ b/resources/lang/zu-ZA/general.php @@ -1,6 +1,7 @@ '2FA reset', 'accessories' => 'Izesekeli', 'activated' => 'Kuvunyelwe', 'accepted_date' => 'Date Accepted', @@ -519,4 +520,13 @@ return [ ], 'no_requestable' => 'There are no requestable assets or asset models.', + 'countable' => [ + 'accessories' => ':count Accessory|:count Accessories', + 'assets' => ':count Asset|:count Assets', + 'licenses' => ':count License|:count Licenses', + 'license_seats' => ':count License Seat|:count License Seats', + 'consumables' => ':count Consumable|:count Consumables', + 'components' => ':count Component|:count Components', + ] + ]; diff --git a/resources/lang/zu-ZA/localizations.php b/resources/lang/zu-ZA/localizations.php index 2de8b42526..f1232dd138 100644 --- a/resources/lang/zu-ZA/localizations.php +++ b/resources/lang/zu-ZA/localizations.php @@ -50,6 +50,7 @@ return [ 'sr-CS' => 'Serbian (Latin)', 'sk-SK'=> 'Slovak', 'sl-SI'=> 'Slovenian', + 'so-SO'=> 'Somali', 'es-ES'=> 'Spanish', 'es-CO'=> 'Spanish, Colombia', 'es-MX'=> 'Spanish, Mexico', diff --git a/resources/lang/zu-ZA/validation.php b/resources/lang/zu-ZA/validation.php index 05382f751d..6aaea0d2a3 100644 --- a/resources/lang/zu-ZA/validation.php +++ b/resources/lang/zu-ZA/validation.php @@ -105,6 +105,8 @@ return [ 'gte' => [ 'numeric' => 'Value cannot be negative' ], + 'checkboxes' => ':attribute contains invalid options.', + 'radio_buttons' => ':attribute is invalid.', /* @@ -151,4 +153,10 @@ return [ 'attributes' => [], + /* + |-------------------------------------------------------------------------- + | Generic Validation Messages + |-------------------------------------------------------------------------- + */ + 'invalid_value_in_field' => 'Invalid value included in this field', ]; diff --git a/resources/views/account/accept/create.blade.php b/resources/views/account/accept/create.blade.php index c05bc3a892..fa6e4b8b56 100644 --- a/resources/views/account/accept/create.blade.php +++ b/resources/views/account/accept/create.blade.php @@ -70,7 +70,7 @@

{{trans('general.sign_tos')}}

- +
@@ -94,6 +94,7 @@ @section('moar_scripts') diff --git a/resources/views/licenses/index.blade.php b/resources/views/licenses/index.blade.php index 8fa52fd1fc..82e34b1909 100755 --- a/resources/views/licenses/index.blade.php +++ b/resources/views/licenses/index.blade.php @@ -13,6 +13,9 @@ {{ trans('general.create') }} @endcan +@can('view', \App\Models\License::class) + {{ trans('general.export') }} +@endcan @stop {{-- Page content --}} diff --git a/resources/views/licenses/view.blade.php b/resources/views/licenses/view.blade.php index b23023f489..4f47055c27 100755 --- a/resources/views/licenses/view.blade.php +++ b/resources/views/licenses/view.blade.php @@ -174,23 +174,56 @@ @endif - @if ($license->supplier_id) -
-
- - {{ trans('general.supplier') }} - -
-
- @if ($license->supplier) - + @if ($license->supplier) +
+
+ {{ trans('general.supplier') }} +
+
+ @can('view', \App\Models\Supplier::class) + + {{ $license->supplier->name }} + + @else {{ $license->supplier->name }} - - @else - {{ trans('general.deleted') }} - @endif + @endcan + + @if ($license->supplier->url) +
{{ $license->supplier->url }} + @endif + + @if ($license->supplier->phone) +
+ {{ $license->supplier->phone }} + @endif + + @if ($license->supplier->email) +
{{ $license->supplier->email }} + @endif + + @if ($license->supplier->address) +
{{ $license->supplier->address }} + @endif + @if ($license->supplier->address2) +
{{ $license->supplier->address2 }} + @endif + @if ($license->supplier->city) +
{{ $license->supplier->city }}, + @endif + @if ($license->supplier->state) + {{ $license->supplier->state }} + @endif + @if ($license->supplier->country) + {{ $license->supplier->country }} + @endif + @if ($license->supplier->zip) + {{ $license->supplier->zip }} + @endif + +
-
+ @else + {{ trans('general.deleted') }} @endif diff --git a/resources/views/modals/location.blade.php b/resources/views/modals/location.blade.php index 112e710249..0b5424b294 100644 --- a/resources/views/modals/location.blade.php +++ b/resources/views/modals/location.blade.php @@ -17,7 +17,7 @@
-
+
diff --git a/resources/views/models/view.blade.php b/resources/views/models/view.blade.php index 91f112d8aa..76d3322998 100755 --- a/resources/views/models/view.blade.php +++ b/resources/views/models/view.blade.php @@ -236,6 +236,12 @@ @endif + @if ($model->created_at) +
  • {{ trans('general.created_at') }}: + {{ Helper::getFormattedDateObject($model->created_at, 'datetime', false) }} +
  • + @endif + @if ($model->min_amt)
  • {{ trans('general.min_amt') }}: {{$model->min_amt }} @@ -313,11 +319,6 @@
  • @endif - - - @if ($model->deleted_at!='') -

  • {{ trans('admin/models/general.restore') }}
  • - @endif @if ($model->note) @@ -337,22 +338,32 @@ @can('create', \App\Models\AssetModel::class) @endcan @can('delete', \App\Models\AssetModel::class) @if ($model->assets_count > 0) -
    - +
    @else -
    - - {{ trans('general.delete') }} -
    + @endif + + +
    + @if ($model->deleted_at!='') +
    + @csrf + +
    + @else + + {{ trans('general.delete') }} + @endif +
    + @endcan
    diff --git a/resources/views/notifications/markdown/report-expected-checkins.blade.php b/resources/views/notifications/markdown/report-expected-checkins.blade.php index 3715188d42..08b81350e4 100644 --- a/resources/views/notifications/markdown/report-expected-checkins.blade.php +++ b/resources/views/notifications/markdown/report-expected-checkins.blade.php @@ -10,7 +10,7 @@ @php $checkin = Helper::getFormattedDateObject($asset->expected_checkin, 'date'); @endphp -| [{{ $asset->present()->name }}]({{ route('hardware.show', ['hardware' => $asset->id]) }}) | [{{ $asset->assigned->present()->fullName }}]({{ route($asset->targetShowRoute().'.show', [$asset->assigned->id]) }}) | {{ $checkin['formatted'] }} +| [{{ $asset->present()->name }}]({{ route('hardware.show', ['hardware' => $asset->id]) }}) | [{{ $asset->assignedTo->present()->fullName }}]({{ route($asset->targetShowRoute().'.show', [$asset->assignedTo->id]) }}) | {{ $checkin['formatted'] }} @endforeach @endcomponent diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index b4f47c6a3c..a3d6b6df2d 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -58,6 +58,7 @@ maintainSelected: true, trimOnSearch: false, showSearchClearButton: true, + addrbar: {{ (config('session.bs_table_addrbar') == 'true') ? 'true' : 'false'}}, // deeplink search phrases, sorting, etc paginationFirstText: "{{ trans('general.first') }}", paginationLastText: "{{ trans('general.last') }}", paginationPreText: "{{ trans('general.previous') }}", diff --git a/resources/views/partials/label2-field-definitions.blade.php b/resources/views/partials/label2-field-definitions.blade.php index 8d8c680c94..b701ffe69a 100644 --- a/resources/views/partials/label2-field-definitions.blade.php +++ b/resources/views/partials/label2-field-definitions.blade.php @@ -306,6 +306,7 @@