Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2023-06-13 18:36:22 +01:00
commit 83708e1be9
1064 changed files with 5817 additions and 3079 deletions

View file

@ -2943,6 +2943,15 @@
"contributions": [ "contributions": [
"code" "code"
] ]
},
{
"login": "qay21",
"name": "Quentin Aymard",
"avatar_url": "https://avatars.githubusercontent.com/u/87803479?v=4",
"profile": "https://github.com/qay21",
"contributions": [
"code"
]
} }
] ]
} }

View file

@ -1,5 +1,5 @@
![Build Status](https://app.chipperci.com/projects/0e5f8979-31eb-4ee6-9abf-050b76ab0383/status/master) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Twitter Follow](https://img.shields.io/twitter/follow/snipeitapp.svg?style=social)](https://twitter.com/snipeitapp) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade) ![Build Status](https://app.chipperci.com/projects/0e5f8979-31eb-4ee6-9abf-050b76ab0383/status/master) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Twitter Follow](https://img.shields.io/twitter/follow/snipeitapp.svg?style=social)](https://twitter.com/snipeitapp) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
[![All Contributors](https://img.shields.io/badge/all_contributors-324-orange.svg?style=flat-square)](#contributors) [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/yZFtShAcKk) [![huntr](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev) [![All Contributors](https://img.shields.io/badge/all_contributors-325-orange.svg?style=flat-square)](#contributors) [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/yZFtShAcKk) [![huntr](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev)
## Snipe-IT - Open Source Asset Management System ## Snipe-IT - Open Source Asset Management System
@ -145,7 +145,7 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
| [<img src="https://avatars.githubusercontent.com/u/28321?v=4" width="110px;"/><br /><sub>Chris Hartjes</sub>](http://www.littlehart.net/atthekeyboard)<br />[💻](https://github.com/snipe/snipe-it/commits?author=chartjes "Code") | [<img src="https://avatars.githubusercontent.com/u/2404584?v=4" width="110px;"/><br /><sub>geo-chen</sub>](https://github.com/geo-chen)<br />[💻](https://github.com/snipe/snipe-it/commits?author=geo-chen "Code") | [<img src="https://avatars.githubusercontent.com/u/6006620?v=4" width="110px;"/><br /><sub>Phan Nguyen</sub>](https://github.com/nh314)<br />[💻](https://github.com/snipe/snipe-it/commits?author=nh314 "Code") | [<img src="https://avatars.githubusercontent.com/u/115993812?v=4" width="110px;"/><br /><sub>Iisakki Jaakkola</sub>](https://github.com/StarlessNights)<br />[💻](https://github.com/snipe/snipe-it/commits?author=StarlessNights "Code") | [<img src="https://avatars.githubusercontent.com/u/22633385?v=4" width="110px;"/><br /><sub>Ikko Ashimine</sub>](https://bandism.net/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=eltociear "Code") | [<img src="https://avatars.githubusercontent.com/u/56871540?v=4" width="110px;"/><br /><sub>Lukas Fehling</sub>](https://github.com/lukasfehling)<br />[💻](https://github.com/snipe/snipe-it/commits?author=lukasfehling "Code") | [<img src="https://avatars.githubusercontent.com/u/1975990?v=4" width="110px;"/><br /><sub>Fernando Almeida</sub>](https://github.com/fernando-almeida)<br />[💻](https://github.com/snipe/snipe-it/commits?author=fernando-almeida "Code") | | [<img src="https://avatars.githubusercontent.com/u/28321?v=4" width="110px;"/><br /><sub>Chris Hartjes</sub>](http://www.littlehart.net/atthekeyboard)<br />[💻](https://github.com/snipe/snipe-it/commits?author=chartjes "Code") | [<img src="https://avatars.githubusercontent.com/u/2404584?v=4" width="110px;"/><br /><sub>geo-chen</sub>](https://github.com/geo-chen)<br />[💻](https://github.com/snipe/snipe-it/commits?author=geo-chen "Code") | [<img src="https://avatars.githubusercontent.com/u/6006620?v=4" width="110px;"/><br /><sub>Phan Nguyen</sub>](https://github.com/nh314)<br />[💻](https://github.com/snipe/snipe-it/commits?author=nh314 "Code") | [<img src="https://avatars.githubusercontent.com/u/115993812?v=4" width="110px;"/><br /><sub>Iisakki Jaakkola</sub>](https://github.com/StarlessNights)<br />[💻](https://github.com/snipe/snipe-it/commits?author=StarlessNights "Code") | [<img src="https://avatars.githubusercontent.com/u/22633385?v=4" width="110px;"/><br /><sub>Ikko Ashimine</sub>](https://bandism.net/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=eltociear "Code") | [<img src="https://avatars.githubusercontent.com/u/56871540?v=4" width="110px;"/><br /><sub>Lukas Fehling</sub>](https://github.com/lukasfehling)<br />[💻](https://github.com/snipe/snipe-it/commits?author=lukasfehling "Code") | [<img src="https://avatars.githubusercontent.com/u/1975990?v=4" width="110px;"/><br /><sub>Fernando Almeida</sub>](https://github.com/fernando-almeida)<br />[💻](https://github.com/snipe/snipe-it/commits?author=fernando-almeida "Code") |
| [<img src="https://avatars.githubusercontent.com/u/116301219?v=4" width="110px;"/><br /><sub>akemidx</sub>](https://github.com/akemidx)<br />[💻](https://github.com/snipe/snipe-it/commits?author=akemidx "Code") | [<img src="https://avatars.githubusercontent.com/u/144778?v=4" width="110px;"/><br /><sub>Oguz Bilgic</sub>](http://oguz.site)<br />[💻](https://github.com/snipe/snipe-it/commits?author=oguzbilgic "Code") | [<img src="https://avatars.githubusercontent.com/u/9262438?v=4" width="110px;"/><br /><sub>Scooter Crawford</sub>](https://github.com/scoo73r)<br />[💻](https://github.com/snipe/snipe-it/commits?author=scoo73r "Code") | [<img src="https://avatars.githubusercontent.com/u/5957345?v=4" width="110px;"/><br /><sub>subdriven</sub>](https://github.com/subdriven)<br />[💻](https://github.com/snipe/snipe-it/commits?author=subdriven "Code") | [<img src="https://avatars.githubusercontent.com/u/658865?v=4" width="110px;"/><br /><sub>Andrew Savinykh</sub>](https://github.com/AndrewSav)<br />[💻](https://github.com/snipe/snipe-it/commits?author=AndrewSav "Code") | [<img src="https://avatars.githubusercontent.com/u/1155067?v=4" width="110px;"/><br /><sub>Tadayuki Onishi</sub>](https://kenchan0130.github.io)<br />[💻](https://github.com/snipe/snipe-it/commits?author=kenchan0130 "Code") | [<img src="https://avatars.githubusercontent.com/u/112496896?v=4" width="110px;"/><br /><sub>Florian</sub>](https://github.com/floschoepfer)<br />[💻](https://github.com/snipe/snipe-it/commits?author=floschoepfer "Code") | | [<img src="https://avatars.githubusercontent.com/u/116301219?v=4" width="110px;"/><br /><sub>akemidx</sub>](https://github.com/akemidx)<br />[💻](https://github.com/snipe/snipe-it/commits?author=akemidx "Code") | [<img src="https://avatars.githubusercontent.com/u/144778?v=4" width="110px;"/><br /><sub>Oguz Bilgic</sub>](http://oguz.site)<br />[💻](https://github.com/snipe/snipe-it/commits?author=oguzbilgic "Code") | [<img src="https://avatars.githubusercontent.com/u/9262438?v=4" width="110px;"/><br /><sub>Scooter Crawford</sub>](https://github.com/scoo73r)<br />[💻](https://github.com/snipe/snipe-it/commits?author=scoo73r "Code") | [<img src="https://avatars.githubusercontent.com/u/5957345?v=4" width="110px;"/><br /><sub>subdriven</sub>](https://github.com/subdriven)<br />[💻](https://github.com/snipe/snipe-it/commits?author=subdriven "Code") | [<img src="https://avatars.githubusercontent.com/u/658865?v=4" width="110px;"/><br /><sub>Andrew Savinykh</sub>](https://github.com/AndrewSav)<br />[💻](https://github.com/snipe/snipe-it/commits?author=AndrewSav "Code") | [<img src="https://avatars.githubusercontent.com/u/1155067?v=4" width="110px;"/><br /><sub>Tadayuki Onishi</sub>](https://kenchan0130.github.io)<br />[💻](https://github.com/snipe/snipe-it/commits?author=kenchan0130 "Code") | [<img src="https://avatars.githubusercontent.com/u/112496896?v=4" width="110px;"/><br /><sub>Florian</sub>](https://github.com/floschoepfer)<br />[💻](https://github.com/snipe/snipe-it/commits?author=floschoepfer "Code") |
| [<img src="https://avatars.githubusercontent.com/u/7305753?v=4" width="110px;"/><br /><sub>Spencer Long</sub>](http://spencerlong.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=spencerrlongg "Code") | [<img src="https://avatars.githubusercontent.com/u/1141514?v=4" width="110px;"/><br /><sub>Marcus Moore</sub>](https://github.com/marcusmoore)<br />[💻](https://github.com/snipe/snipe-it/commits?author=marcusmoore "Code") | [<img src="https://avatars.githubusercontent.com/u/570639?v=4" width="110px;"/><br /><sub>Martin Meredith</sub>](https://github.com/Mezzle)<br /> | [<img src="https://avatars.githubusercontent.com/u/5731963?v=4" width="110px;"/><br /><sub>dboth</sub>](http://dboth.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=dboth "Code") | [<img src="https://avatars.githubusercontent.com/u/87536651?v=4" width="110px;"/><br /><sub>Zachary Fleck</sub>](https://github.com/zacharyfleck)<br />[💻](https://github.com/snipe/snipe-it/commits?author=zacharyfleck "Code") | [<img src="https://avatars.githubusercontent.com/u/74609912?v=4" width="110px;"/><br /><sub>VIKAAS-A</sub>](https://github.com/vikaas-cyper)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vikaas-cyper "Code") | [<img src="https://avatars.githubusercontent.com/u/88882041?v=4" width="110px;"/><br /><sub>Abdul Kareem</sub>](https://github.com/ak-piracha)<br />[💻](https://github.com/snipe/snipe-it/commits?author=ak-piracha "Code") | | [<img src="https://avatars.githubusercontent.com/u/7305753?v=4" width="110px;"/><br /><sub>Spencer Long</sub>](http://spencerlong.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=spencerrlongg "Code") | [<img src="https://avatars.githubusercontent.com/u/1141514?v=4" width="110px;"/><br /><sub>Marcus Moore</sub>](https://github.com/marcusmoore)<br />[💻](https://github.com/snipe/snipe-it/commits?author=marcusmoore "Code") | [<img src="https://avatars.githubusercontent.com/u/570639?v=4" width="110px;"/><br /><sub>Martin Meredith</sub>](https://github.com/Mezzle)<br /> | [<img src="https://avatars.githubusercontent.com/u/5731963?v=4" width="110px;"/><br /><sub>dboth</sub>](http://dboth.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=dboth "Code") | [<img src="https://avatars.githubusercontent.com/u/87536651?v=4" width="110px;"/><br /><sub>Zachary Fleck</sub>](https://github.com/zacharyfleck)<br />[💻](https://github.com/snipe/snipe-it/commits?author=zacharyfleck "Code") | [<img src="https://avatars.githubusercontent.com/u/74609912?v=4" width="110px;"/><br /><sub>VIKAAS-A</sub>](https://github.com/vikaas-cyper)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vikaas-cyper "Code") | [<img src="https://avatars.githubusercontent.com/u/88882041?v=4" width="110px;"/><br /><sub>Abdul Kareem</sub>](https://github.com/ak-piracha)<br />[💻](https://github.com/snipe/snipe-it/commits?author=ak-piracha "Code") |
| [<img src="https://avatars.githubusercontent.com/u/111287779?v=4" width="110px;"/><br /><sub>NojoudAlshehri</sub>](https://github.com/NojoudAlshehri)<br />[💻](https://github.com/snipe/snipe-it/commits?author=NojoudAlshehri "Code") | [<img src="https://avatars.githubusercontent.com/u/54367449?v=4" width="110px;"/><br /><sub>Stefan Stidl</sub>](https://github.com/stefanstidlffg)<br />[💻](https://github.com/snipe/snipe-it/commits?author=stefanstidlffg "Code") | | [<img src="https://avatars.githubusercontent.com/u/111287779?v=4" width="110px;"/><br /><sub>NojoudAlshehri</sub>](https://github.com/NojoudAlshehri)<br />[💻](https://github.com/snipe/snipe-it/commits?author=NojoudAlshehri "Code") | [<img src="https://avatars.githubusercontent.com/u/54367449?v=4" width="110px;"/><br /><sub>Stefan Stidl</sub>](https://github.com/stefanstidlffg)<br />[💻](https://github.com/snipe/snipe-it/commits?author=stefanstidlffg "Code") | [<img src="https://avatars.githubusercontent.com/u/87803479?v=4" width="110px;"/><br /><sub>Quentin Aymard</sub>](https://github.com/qay21)<br />[💻](https://github.com/snipe/snipe-it/commits?author=qay21 "Code") |
<!-- ALL-CONTRIBUTORS-LIST:END --> <!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!

View file

@ -38,6 +38,16 @@ class Importer extends Component
public $field_map; // we need a separate variable for the field-mapping, because the keys in the normal array are too complicated for Livewire to understand public $field_map; // we need a separate variable for the field-mapping, because the keys in the normal array are too complicated for Livewire to understand
public $file_id; // TODO: I can't figure out *why* we need this, but it really seems like we do. I can't seem to pull the id from the activeFile for some reason? public $file_id; // TODO: I can't figure out *why* we need this, but it really seems like we do. I can't seem to pull the id from the activeFile for some reason?
// Make these variables public - we set the properties in the constructor so we can localize them (versus the old static arrays)
public $accessories_fields;
public $assets_fields;
public $users_fields;
public $licenses_fields;
public $locations_fields;
public $consumables_fields;
public $components_fields;
public $aliases_fields;
protected $rules = [ protected $rules = [
'files.*.file_path' => 'required|string', 'files.*.file_path' => 'required|string',
'files.*.created_at' => 'required|string', 'files.*.created_at' => 'required|string',
@ -57,189 +67,34 @@ class Importer extends Component
return json_encode(array_filter($tmp)); return json_encode(array_filter($tmp));
} }
// all of these 'statics', alas, may have to change to something else to handle translations?
// I'm not sure. Maybe I use them to 'populate' the translations? TBH, I don't know yet.
static $general = [
'category' => 'Category',
'company' => 'Company',
'email' => 'Email',
'item_name' => 'Item Name',
'location' => 'Location',
'maintained' => 'Maintained',
'manufacturer' => 'Manufacturer',
'order_number' => 'Order Number',
'purchase_cost' => 'Purchase Cost',
'purchase_date' => 'Purchase Date',
'quantity' => 'Quantity',
'requestable' => 'Requestable',
'serial' => 'Serial Number',
'supplier' => 'Supplier',
'username' => 'Username',
'department' => 'Department',
];
static $accessories = [
'model_number' => 'Model Number',
'notes' => 'Notes',
];
static $assets = [
'asset_tag' => 'Asset Tag',
'asset_model' => 'Model Name',
'asset_notes' => 'Asset Notes',
'model_notes' => 'Model Notes',
'byod' => 'BYOD',
'checkout_class' => 'Checkout Type',
'checkout_location' => 'Checkout Location',
'image' => 'Image Filename',
'model_number' => 'Model Number',
'full_name' => 'Full Name',
'status' => 'Status',
'warranty_months' => 'Warranty Months',
'asset_eol_date' => 'EOL Date',
];
static $consumables = [
'item_no' => "Item Number",
'model_number' => "Model Number",
'notes' => 'Notes',
'min_amt' => "Minimum Quantity",
];
static $licenses = [
'asset_tag' => 'Assigned To Asset',
'expiration_date' => 'Expiration Date',
'full_name' => 'Full Name',
'license_email' => 'Licensed To Email',
'license_name' => 'Licensed To Name',
'purchase_order' => 'Purchase Order',
'reassignable' => 'Reassignable',
'seats' => 'Seats',
'notes' => 'Notes',
];
static $users = [
'employee_num' => 'Employee Number',
'first_name' => 'First Name',
'last_name' => 'Last Name',
'notes' => 'Notes',
'jobtitle' => 'Job Title',
'phone_number' => 'Phone Number',
'manager_first_name' => 'Manager First Name',
'manager_last_name' => 'Manager Last Name',
'activated' => 'Activated',
'address' => 'Address',
'city' => 'City',
'state' => 'State',
'country' => 'Country',
'zip' => 'Zip',
'vip' => 'VIP',
'remote' => 'Remote',
];
static $locations = [
'name' => 'Name',
'address' => 'Address',
'address2' => 'Address 2',
'city' => 'City',
'state' => 'State',
'country' => 'Country',
'zip' => 'Zip',
'currency' => 'Currency',
'ldap_ou' => 'LDAP OU',
'manager_username' => 'Manager Username',
'manager' => 'Manager',
'parent_location' => 'Parent Location',
'notes' => 'Notes',
];
//array of "real fieldnames" to a list of aliases for that field
static $aliases = [
'model_number' =>
[
'model',
'model no',
'model no.',
'model number',
'model num',
'model num.'
],
'warranty_months' =>
[
'Warranty',
'Warranty Months'
],
'qty' =>
[
'QTY',
'Quantity'
],
'zip' =>
[
'Postal Code',
'Post Code'
],
'min_amt' =>
[
'Min Amount',
'Min QTY'
],
'next_audit_date' =>
[
'Next Audit',
],
'address2' =>
[
'Address 2',
'Address2',
],
'ldap_ou' =>
[
'LDAP OU',
'OU',
],
'parent_location' =>
[
'Parent',
'Parent Location',
],
'manager' =>
[
'Managed By',
'Manager Name',
'Manager Full Name',
],
'manager_username' =>
[
'Manager Username',
],
];
private function getColumns($type) private function getColumns($type)
{ {
switch ($type) { switch ($type) {
case 'asset': case 'asset':
$results = self::$general + self::$assets; $results = $this->assets_fields;
break; break;
case 'accessory': case 'accessory':
$results = self::$general + self::$accessories; $results = $this->accessories_fields;
break; break;
case 'consumable': case 'consumable':
$results = self::$general + self::$consumables; $results = $this->consumables_fields;
break;
case 'component':
$results = $this->components_fields;
break; break;
case 'license': case 'license':
$results = self::$general + self::$licenses; $results = $this->licenses_fields;
break; break;
case 'user': case 'user':
$results = self::$general + self::$users; $results = $this->users_fields;
break; break;
case 'location': case 'location':
$results = self::$general + self::$locations; $results = $this->locations_fields;
break; break;
default: default:
$results = self::$general; $results = [];
} }
asort($results, SORT_FLAG_CASE | SORT_STRING); asort($results, SORT_FLAG_CASE | SORT_STRING);
if ($type == "asset") { if ($type == "asset") {
@ -268,7 +123,7 @@ class Importer extends Component
continue; continue;
} else { } else {
//no, this key is *INVALID* for this import type. Better set it to null //no, this key is *INVALID* for this import type. Better set it to null
// and we'll hope that the aliases or something else picks it up. // and we'll hope that the $aliases_fields or something else picks it up.
$this->field_map[$i] = null; // fingers crossed! But it's not likely, tbh. $this->field_map[$i] = null; // fingers crossed! But it's not likely, tbh.
} // TODO - strictly speaking, this isn't necessary here I don't think. } // TODO - strictly speaking, this isn't necessary here I don't think.
} }
@ -279,8 +134,8 @@ class Importer extends Component
continue 2; //don't bother with the alias check, go to the next header continue 2; //don't bother with the alias check, go to the next header
} }
} }
// if you got here, we didn't find a match. Try the aliases // if you got here, we didn't find a match. Try the $aliases_fields
foreach (self::$aliases as $key => $alias_values) { foreach ($this->aliases_fields as $key => $alias_values) {
foreach ($alias_values as $alias_value) { foreach ($alias_values as $alias_value) {
if (strcasecmp($alias_value, $header) === 0) { // aLsO CaSe-INSENSitiVE! if (strcasecmp($alias_value, $header) === 0) { // aLsO CaSe-INSENSitiVE!
// Make *absolutely* sure that this key actually _exists_ in this import type - // Make *absolutely* sure that this key actually _exists_ in this import type -
@ -319,6 +174,301 @@ class Importer extends Component
'location' => trans('general.locations'), 'location' => trans('general.locations'),
]; ];
/**
* These are the item-type specific columns
*/
$this->accessories_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'quantity' => trans('general.qty'),
'item_name' => trans('general.item_name_var', ['item' => trans('general.accessory')]),
'model_number' => trans('general.model_no'),
'notes' => trans('general.notes'),
'category' => trans('general.category'),
'supplier' => trans('general.supplier'),
'min_amt' => trans('mail.min_QTY'),
'purchase_cost' => trans('general.purchase_cost'),
'purchase_date' => trans('general.purchase_date'),
'manufacturer' => trans('general.manufacturer'),
'order_number' => trans('general.order_number'),
];
$this->assets_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'item_name' => trans('general.item_name_var', ['item' => trans('general.asset')]),
'asset_tag' => trans('general.asset_tag'),
'asset_model' => trans('general.model_name'),
'byod' => trans('general.byod'),
'model_number' => trans('general.model_no'),
'status' => trans('general.status'),
'warranty_months' => trans('admin/hardware/form.warranty'),
'category' => trans('general.category'),
'requestable' => trans('admin/hardware/general.requestable'),
'serial' => trans('general.serial_number'),
'supplier' => trans('general.supplier'),
'purchase_cost' => trans('general.purchase_cost'),
'purchase_date' => trans('general.purchase_date'),
'purchase_order' => trans('admin/licenses/form.purchase_order'),
'asset_notes' => trans('general.item_notes', ['item' => trans('admin/hardware/general.asset')]),
'model_notes' => trans('general.item_notes', ['item' => trans('admin/hardware/form.model')]),
'manufacturer' => trans('general.manufacturer'),
'order_number' => trans('general.order_number'),
'notes' => trans('general.notes'),
'image' => trans('general.importer.image_filename'),
/**
* Checkout fields:
* Assets can be checked out to other assets, people, or locations, but we currently
* only support checkout to people and locations in the importer
**/
'checkout_class' => trans('general.importer.checkout_type'),
'first_name' => trans('general.importer.checked_out_to_first_name'),
'last_name' => trans('general.importer.checked_out_to_last_name'),
'full_name' => trans('general.importer.checked_out_to_fullname'),
'email' => trans('general.importer.checked_out_to_email'),
'username' => trans('general.importer.checked_out_to_username'),
'checkout_location' => trans('general.importer.checkout_location'),
];
$this->consumables_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'quantity' => trans('general.qty'),
'item_name' => trans('general.item_name_var', ['item' => trans('general.consumable')]),
'model_number' => trans('general.model_no'),
'notes' => trans('general.notes'),
'min_amt' => trans('mail.min_QTY'),
'category' => trans('general.category'),
'purchase_cost' => trans('general.purchase_cost'),
'purchase_date' => trans('general.purchase_date'),
'checkout_class' => trans('general.importer.checkout_type'),
'supplier' => trans('general.supplier'),
'manufacturer' => trans('general.manufacturer'),
'order_number' => trans('general.order_number'),
'item_no' => trans('admin/consumables/general.item_no'),
];
$this->components_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'quantity' => trans('general.qty'),
'item_name' => trans('general.item_name_var', ['item' => trans('general.component')]),
'model_number' => trans('general.model_no'),
'notes' => trans('general.notes'),
'category' => trans('general.category'),
'supplier' => trans('general.supplier'),
'min_amt' => trans('mail.min_QTY'),
'purchase_cost' => trans('general.purchase_cost'),
'purchase_date' => trans('general.purchase_date'),
'manufacturer' => trans('general.manufacturer'),
'order_number' => trans('general.order_number'),
'serial' => trans('general.serial_number'),
];
$this->licenses_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'item_name' => trans('general.item_name_var', ['item' => trans('general.license')]),
'asset_tag' => trans('general.importer.checked_out_to_tag'),
'expiration_date' => trans('admin/licenses/form.expiration'),
'full_name' => trans('general.importer.checked_out_to_fullname'),
'license_email' => trans('admin/licenses/form.to_email'),
'license_name' => trans('admin/licenses/form.to_name'),
'purchase_order' => trans('admin/licenses/form.purchase_order'),
'reassignable' => trans('admin/licenses/form.reassignable'),
'seats' => trans('admin/licenses/form.seats'),
'notes' => trans('general.notes'),
'category' => trans('general.category'),
'supplier' => trans('general.supplier'),
'purchase_cost' => trans('general.purchase_cost'),
'purchase_date' => trans('general.purchase_date'),
'maintained' => trans('admin/licenses/form.maintained'),
'checkout_class' => trans('general.importer.checkout_type'),
'serial' => trans('general.license_serial'),
];
$this->users_fields = [
'company' => trans('general.company'),
'location' => trans('general.location'),
'department' => trans('general.department'),
'first_name' => trans('general.first_name'),
'last_name' => trans('general.last_name'),
'notes' => trans('general.notes'),
'username' => trans('admin/users/table.username'),
'jobtitle' => trans('admin/users/table.title'),
'phone_number' => trans('admin/users/table.phone'),
'manager_first_name' => trans('general.importer.manager_first_name'),
'manager_last_name' => trans('general.importer.manager_last_name'),
'activated' => trans('general.activated'),
'address' => trans('general.address'),
'city' => trans('general.city'),
'state' => trans('general.state'),
'country' => trans('general.country'),
'zip' => trans('general.zip'),
'vip' => trans('general.importer.vip'),
'remote' => trans('admin/users/general.remote'),
'email' => trans('admin/users/table.email'),
'website' => trans('general.website'),
'avatar' => trans('general.image'),
'gravatar' => trans('general.importer.gravatar'),
'start_date' => trans('general.start_date'),
'end_date' => trans('general.end_date'),
'employee_number' => trans('general.employee_number'),
];
$this->locations_fields = [
'name' => trans('general.item_name_var', ['item' => trans('general.location')]),
'address' => trans('general.address'),
'address2' => trans('general.importer.address2'),
'city' => trans('general.city'),
'state' => trans('general.state'),
'country' => trans('general.country'),
'zip' => trans('general.zip'),
'currency' => trans('general.importer.currency'),
'ldap_ou' => trans('admin/locations/table.ldap_ou'),
'manager_username' => trans('general.importer.manager_username'),
'manager' => trans('general.importer.manager_full_name'),
'parent_location' => trans('admin/locations/table.parent'),
];
// "real fieldnames" to a list of aliases for that field
$this->aliases_fields = [
'item_name' =>
[
'item name',
'asset name',
'accessory name',
'user name',
'consumable name',
'component name',
'name',
],
'item_no' => [
'item number',
'item no.',
'item #',
],
'asset_model' =>
[
'model name',
'model',
],
'gravatar' =>
[
'gravatar',
],
'currency' =>
[
'$',
],
'jobtitle' =>
[
'job title for user',
'job title',
],
'username' =>
[
'user name',
'username',
trans('general.importer.checked_out_to_username'),
],
'first_name' =>
[
'first name',
trans('general.importer.checked_out_to_first_name'),
],
'last_name' =>
[
'last name',
'lastname',
trans('general.importer.checked_out_to_last_name'),
],
'email' =>
[
'email',
'e-mail',
trans('general.importer.checked_out_to_email'),
],
'phone_number' =>
[
'phone',
'phone number',
'phone num',
'telephone number',
'telephone',
'tel.',
],
'serial' =>
[
'serial number',
'serial no.',
'serial no',
'product key',
'key',
],
'model_number' =>
[
'model',
'model no',
'model no.',
'model number',
'model num',
'model num.'
],
'warranty_months' =>
[
'Warranty',
'Warranty Months'
],
'qty' =>
[
'QTY',
'Quantity'
],
'zip' =>
[
'Postal Code',
'Post Code',
'Zip Code'
],
'min_amt' =>
[
'Min Amount',
'Minimum Amount',
'Min Quantity',
'Minimum Quantity',
],
'next_audit_date' =>
[
'Next Audit',
],
'address2' =>
[
'Address 2',
'Address2',
],
'ldap_ou' =>
[
'LDAP OU',
'OU',
],
'parent_location' =>
[
'Parent',
'Parent Location',
],
'manager' =>
[
'Managed By',
'Manager Name',
'Manager Full Name',
],
'manager_username' =>
[
'Manager Username',
],
];
$this->columnOptions[''] = $this->getColumns(''); //blank mode? I don't know what this is supposed to mean $this->columnOptions[''] = $this->getColumns(''); //blank mode? I don't know what this is supposed to mean
foreach($this->importTypes AS $type => $name) { foreach($this->importTypes AS $type => $name) {
$this->columnOptions[$type] = $this->getColumns($type); $this->columnOptions[$type] = $this->getColumns($type);

View file

@ -132,10 +132,9 @@ class AssetImporter extends ItemImporter
} }
} }
// FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything.
// $asset->unsetEventDispatcher();
if ($asset->save()) { if ($asset->save()) {
$asset->logCreate('Imported using csv importer'); $asset->logCreate(trans('general.importer.import_note'));
$this->log('Asset '.$this->item['name'].' with serial number '.$this->item['serial'].' was created'); $this->log('Asset '.$this->item['name'].' with serial number '.$this->item['serial'].' was created');
// If we have a target to checkout to, lets do so. // If we have a target to checkout to, lets do so.

View file

@ -27,60 +27,14 @@ abstract class Importer
protected $updating; protected $updating;
/** /**
* Default Map of item fields->csv names * Default Map of item fields->csv names
*
* This has been moved into Livewire/Importer.php to be more granular.
* @todo - remove references to this property since we don't use it anymore.
*
* @var array * @var array
*/ */
private $defaultFieldMap = [ private $defaultFieldMap = [
'asset_tag' => 'asset tag',
'activated' => 'activated',
'category' => 'category',
'checkout_class' => 'checkout type', // Supports Location or User for assets. Using checkout_class instead of checkout_type because type exists on asset already.
'checkout_location' => 'checkout location',
'company' => 'company',
'item_name' => 'item name',
'item_number' => 'item number',
'image' => 'image',
'expiration_date' => 'expiration date',
'location' => 'location',
'notes' => 'notes',
'license_email' => 'licensed to email',
'license_name' => 'licensed to name',
'maintained' => 'maintained',
'manufacturer' => 'manufacturer',
'asset_model' => 'model name',
'model_number' => 'model number',
'order_number' => 'order number',
'purchase_cost' => 'purchase cost',
'purchase_date' => 'purchase date',
'purchase_order' => 'purchase order',
'qty' => 'quantity',
'reassignable' => 'reassignable',
'requestable' => 'requestable',
'seats' => 'seats',
'serial' => 'serial number',
'status' => 'status',
'supplier' => 'supplier',
'termination_date' => 'termination date',
'warranty_months' => 'warranty',
'full_name' => 'full name',
'email' => 'email',
'username' => 'username',
'address' => 'address',
'address2' => 'address2',
'city' => 'city',
'state' => 'state',
'country' => 'country',
'zip' => 'zip',
'jobtitle' => 'job title',
'employee_num' => 'employee number',
'phone_number' => 'phone number',
'first_name' => 'first name',
'last_name' => 'last name',
'department' => 'department',
'manager_name' => 'manager full name',
'manager_username' => 'manager username',
'min_amt' => 'minimum quantity',
'remote' => 'remote',
'vip' => 'vip',
]; ];
/** /**
* Map of item fields->csv names * Map of item fields->csv names
@ -288,6 +242,8 @@ abstract class Importer
$user_array = [ $user_array = [
'full_name' => $this->findCsvMatch($row, 'full_name'), 'full_name' => $this->findCsvMatch($row, 'full_name'),
'first_name' => $this->findCsvMatch($row, 'first_name'),
'last_name' => $this->findCsvMatch($row, 'last_name'),
'email' => $this->findCsvMatch($row, 'email'), 'email' => $this->findCsvMatch($row, 'email'),
'manager_id'=> '', 'manager_id'=> '',
'department_id' => '', 'department_id' => '',
@ -296,7 +252,6 @@ abstract class Importer
'remote' => $this->fetchHumanBoolean(($this->findCsvMatch($row, 'remote'))), 'remote' => $this->fetchHumanBoolean(($this->findCsvMatch($row, 'remote'))),
]; ];
if ($type == 'manager') { if ($type == 'manager') {
$user_array['full_name'] = $this->findCsvMatch($row, 'manager'); $user_array['full_name'] = $this->findCsvMatch($row, 'manager');
$user_array['username'] = $this->findCsvMatch($row, 'manager_username'); $user_array['username'] = $this->findCsvMatch($row, 'manager_username');
@ -312,8 +267,9 @@ abstract class Importer
// If the full name and username is empty, bail out--we need this to extract first name (at the very least) // If the full name and username is empty, bail out--we need this to extract first name (at the very least)
if ((empty($user_array['username'])) && (empty($user_array['full_name']))) { if ((empty($user_array['username'])) && (empty($user_array['full_name'])) && (empty($user_array['first_name']))) {
$this->log('Insufficient user data provided (Full name or username is required) - skipping user creation.'); $this->log('Insufficient user data provided (Full name, first name or username is required) - skipping user creation.');
\Log::debug('User array: ');
\Log::debug(print_r($user_array, true)); \Log::debug(print_r($user_array, true));
\Log::debug(print_r($row, true)); \Log::debug(print_r($row, true));
return false; return false;
@ -325,10 +281,12 @@ abstract class Importer
$user_array['email'] = User::generateEmailFromFullName($user_array['full_name']); $user_array['email'] = User::generateEmailFromFullName($user_array['full_name']);
} }
// Get some fields for first name and last name based off of full name if (empty($user_array['first_name'])) {
$user_formatted_array = User::generateFormattedNameFromFullName($user_array['full_name'], Setting::getSettings()->username_format); // Get some fields for first name and last name based off of full name
$user_array['first_name'] = $user_formatted_array['first_name']; $user_formatted_array = User::generateFormattedNameFromFullName($user_array['full_name'], Setting::getSettings()->username_format);
$user_array['last_name'] = $user_formatted_array['last_name']; $user_array['first_name'] = $user_formatted_array['first_name'];
$user_array['last_name'] = $user_formatted_array['last_name'];
}
if (empty($user_array['username'])) { if (empty($user_array['username'])) {
$user_array['username'] = $user_formatted_array['username']; $user_array['username'] = $user_formatted_array['username'];

View file

@ -112,15 +112,11 @@ class ItemImporter extends Importer
*/ */
protected function determineCheckout($row) protected function determineCheckout($row)
{ {
// Locations don't get checked out to anyone/anything
if (get_class($this) == LocationImporter::class) { if (get_class($this) == LocationImporter::class) {
return; return;
} }
// We only support checkout-to-location for asset, so short circuit otherwise.
if (get_class($this) != AssetImporter::class) {
return $this->createOrFetchUser($row);
}
if (strtolower($this->item['checkout_class']) === 'location' && $this->findCsvMatch($row, 'checkout_location') != null ) { if (strtolower($this->item['checkout_class']) === 'location' && $this->findCsvMatch($row, 'checkout_location') != null ) {
return Location::findOrFail($this->createOrFetchLocation($this->findCsvMatch($row, 'checkout_location'))); return Location::findOrFail($this->createOrFetchLocation($this->findCsvMatch($row, 'checkout_location')));
} }

View file

@ -46,12 +46,16 @@ class UserImporter extends ItemImporter
$this->item['first_name'] = $this->findCsvMatch($row, 'first_name'); $this->item['first_name'] = $this->findCsvMatch($row, 'first_name');
$this->item['last_name'] = $this->findCsvMatch($row, 'last_name'); $this->item['last_name'] = $this->findCsvMatch($row, 'last_name');
$this->item['email'] = $this->findCsvMatch($row, 'email'); $this->item['email'] = $this->findCsvMatch($row, 'email');
$this->item['gravatar'] = $this->findCsvMatch($row, 'gravatar');
$this->item['phone'] = $this->findCsvMatch($row, 'phone_number'); $this->item['phone'] = $this->findCsvMatch($row, 'phone_number');
$this->item['website'] = $this->findCsvMatch($row, 'website');
$this->item['jobtitle'] = $this->findCsvMatch($row, 'jobtitle'); $this->item['jobtitle'] = $this->findCsvMatch($row, 'jobtitle');
$this->item['address'] = $this->findCsvMatch($row, 'address'); $this->item['address'] = $this->findCsvMatch($row, 'address');
$this->item['city'] = $this->findCsvMatch($row, 'city'); $this->item['city'] = $this->findCsvMatch($row, 'city');
$this->item['state'] = $this->findCsvMatch($row, 'state'); $this->item['state'] = $this->findCsvMatch($row, 'state');
$this->item['country'] = $this->findCsvMatch($row, 'country'); $this->item['country'] = $this->findCsvMatch($row, 'country');
$this->item['start_date'] = $this->findCsvMatch($row, 'start_date');
$this->item['end_date'] = $this->findCsvMatch($row, 'end_date');
$this->item['zip'] = $this->findCsvMatch($row, 'zip'); $this->item['zip'] = $this->findCsvMatch($row, 'zip');
$this->item['activated'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'activated')) == 1) ? '1' : 0; $this->item['activated'] = ($this->fetchHumanBoolean($this->findCsvMatch($row, 'activated')) == 1) ? '1' : 0;
$this->item['employee_num'] = $this->findCsvMatch($row, 'employee_num'); $this->item['employee_num'] = $this->findCsvMatch($row, 'employee_num');

View file

@ -1,45 +0,0 @@
| CSV | Item | Applicable Types |
|---------------------|------------------|-------------------------------------------|
| activated | | User |
| asset tag | asset_tag | Asset |
| category | category | All |
| company | company | All |
| department_id | | User ? All |
| item name | item_name | All |
| image | image | Asset |
| email | | |
| expiration date | expiration_date | License |
| location | location | All |
| notes | notes | All |
| licensed to email | license_email | License |
| licensed to name | license_name | License |
| maintained | maintained | License |
| manager_id | | User |
| manufacturer | manufacturer | All |
| model name | asset_model | Asset |
| model number | model_number | Asset |
| order number | order_number | All ? |
| purchase cost | purchase_cost | All ? |
| purchase date | purchase_date | All ? |
| purchase order | purchase_order | License |
| quantity | qty | Accessory, Consumable, Component, License |
| reassignable | reassignable | License |
| requestable | requestable | Asset, Accessory? |
| seats | seats | License |
| serial number | serial | Asset, license |
| status | status | Asset ? All |
| supplier | supplier | Asset ? All |
| minimum quantity | min_amt | Consumable |
| termination date | termination_date | License |
| warranty months | warranty_months | Asset |
| User Related Fields | assigned_to | Asset |
| name | | |
| email | | |
| username | | |
| address | address | User |
| city | city | User |
| state | state | User |
| country | country | User |
| vip | vip | User |
| byod | byod | Asset |

View file

@ -17,5 +17,6 @@ return array(
'use_default_eula' => 'Gebruik eerder die <a href="#" data-toggle="modal" data-target="#eulaModal">primary standaard EULA</a>.', 'use_default_eula' => 'Gebruik eerder die <a href="#" data-toggle="modal" data-target="#eulaModal">primary standaard EULA</a>.',
'use_default_eula_disabled' => '<del>Gebruik die primêre standaardverlof in plaas daarvan.</del> Geen primêre standaard EULA is ingestel nie. Voeg asseblief een by Instellings.', 'use_default_eula_disabled' => '<del>Gebruik die primêre standaardverlof in plaas daarvan.</del> Geen primêre standaard EULA is ingestel nie. Voeg asseblief een by Instellings.',
'clone' => 'Clone Accessory', 'clone' => 'Clone Accessory',
'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.',
); );

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Komponent is nie nagegaan nie, probeer asseblief weer', 'error' => 'Komponent is nie nagegaan nie, probeer asseblief weer',
'success' => 'Komponent is suksesvol nagegaan.', 'success' => 'Komponent is suksesvol nagegaan.',
'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.' 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.',
'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Verbruiksgoedere is nie nagegaan nie, probeer asseblief weer', 'error' => 'Verbruiksgoedere is nie nagegaan nie, probeer asseblief weer',
'success' => 'Verbruiksgoedere is suksesvol nagegaan.', 'success' => 'Verbruiksgoedere is suksesvol nagegaan.',
'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.' 'user_does_not_exist' => 'Die gebruiker is ongeldig. Probeer asseblief weer.',
'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -49,4 +49,6 @@ return [
'unique' => 'Unique', 'unique' => 'Unique',
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
'display_in_user_view_table' => 'Visible to User', 'display_in_user_view_table' => 'Visible to User',
'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset',
'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets',
]; ];

View file

@ -23,6 +23,7 @@ return [
'restore' => 'Herstel bate', 'restore' => 'Herstel bate',
'pending' => 'hangende', 'pending' => 'hangende',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.',
'view' => 'Bekyk bate', 'view' => 'Bekyk bate',
'csv_error' => 'You have an error in your CSV file:', 'csv_error' => 'You have an error in your CSV file:',
'import_text' => ' 'import_text' => '

View file

@ -8,6 +8,7 @@ return [
'change' => 'In uit', 'change' => 'In uit',
'checkout_date' => 'Checkout Datum', 'checkout_date' => 'Checkout Datum',
'checkoutto' => 'Gekontroleer', 'checkoutto' => 'Gekontroleer',
'components_cost' => 'Total Components Cost',
'current_value' => 'Current Value', 'current_value' => 'Current Value',
'diff' => 'diff', 'diff' => 'diff',
'dl_csv' => 'Laai CSV af', 'dl_csv' => 'Laai CSV af',

View file

@ -1,8 +1,8 @@
<?php <?php
return array( return array(
'about_licenses_title' => 'Oor lisensies', 'about_licenses_title' => 'Oor lisensies',
'about_licenses' => 'Lisensies word gebruik om sagteware op te spoor. Hulle het \'n gespesifiseerde aantal sitplekke wat aan individue nagekeken kan word', 'about_licenses' => 'Lisensies word gebruik om sagteware op te spoor. Hulle het \'n gespesifiseerde aantal sitplekke wat aan individue nagekeken kan word',
'checkin' => 'Checkin License Seat', 'checkin' => 'Checkin License Seat',
'checkout_history' => 'Afhandeling Geskiedenis', 'checkout_history' => 'Afhandeling Geskiedenis',
'checkout' => 'Checkout License Seat', 'checkout' => 'Checkout License Seat',
@ -18,4 +18,30 @@ return array(
'software_licenses' => 'Sagteware lisensies', 'software_licenses' => 'Sagteware lisensies',
'user' => 'gebruiker', 'user' => 'gebruiker',
'view' => 'Bekyk lisensie', 'view' => 'Bekyk lisensie',
'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.',
'bulk' =>
[
'checkin_all' => [
'button' => 'Checkin All Seats',
'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.',
'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets',
'disabled_tooltip' => 'This is disabled because there are no seats currently checked out',
'success' => 'License successfully checked in! | All licenses were successfully checked in!',
'log_msg' => 'Checked in via bulk license checkout in license GUI',
],
'checkout_all' => [
'button' => 'Checkout All Seats',
'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.',
'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users',
'disabled_tooltip' => 'This is disabled because there are no seats currently available',
'success' => 'License successfully checked out! | :count licenses were successfully checked out!',
'error_no_seats' => 'There are no remaining seats left for this license.',
'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.',
'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.',
'log_msg' => 'Checked out via bulk license checkout in license GUI',
],
],
); );

View file

@ -2,6 +2,7 @@
return array( return array(
'support_url_help' => 'Use <code>{LOCALE}</code> and <code>{SERIAL}</code> in your URL as variables to have those values auto-populate when viewing assets.',
'does_not_exist' => 'Vervaardiger bestaan nie.', 'does_not_exist' => 'Vervaardiger bestaan nie.',
'assoc_users' => 'Hierdie vervaardiger word tans geassosieer met ten minste een model en kan nie verwyder word nie. Dateer asseblief jou modelle op om nie meer hierdie vervaardiger te gebruik nie en probeer weer.', 'assoc_users' => 'Hierdie vervaardiger word tans geassosieer met ten minste een model en kan nie verwyder word nie. Dateer asseblief jou modelle op om nie meer hierdie vervaardiger te gebruik nie en probeer weer.',

View file

@ -10,6 +10,7 @@ return array(
'support_email' => 'Ondersteunings-e-pos', 'support_email' => 'Ondersteunings-e-pos',
'support_phone' => 'Ondersteuningsfoon', 'support_phone' => 'Ondersteuningsfoon',
'support_url' => 'Ondersteunings-URL', 'support_url' => 'Ondersteunings-URL',
'warranty_lookup_url' => 'Warranty Lookup URL',
'update' => 'Update Fabrikant', 'update' => 'Update Fabrikant',
'url' => 'URL', 'url' => 'URL',

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Restoring from Backup', 'backups_restoring' => 'Restoring from Backup',
'backups_upload' => 'Upload Backup', 'backups_upload' => 'Upload Backup',
'backups_path' => 'Backups on the server are stored in <code>:path</code>', 'backups_path' => 'Backups on the server are stored in <code>:path</code>',
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.',
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
'barcode_settings' => 'Barcode-instellings', 'barcode_settings' => 'Barcode-instellings',
@ -86,6 +86,8 @@ return [
'ldap_settings' => 'LDAP-instellings', 'ldap_settings' => 'LDAP-instellings',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_client_tls_key' => 'LDAP Client-Side TLS key', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key',
'ldap_location' => 'LDAP Location',
'ldap_location_help' => 'The Ldap Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_manager' => 'LDAP Manager', 'ldap_manager' => 'LDAP Manager',
@ -328,4 +330,9 @@ return [
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'ldap_settings_link' => 'LDAP Settings Page', 'ldap_settings_link' => 'LDAP Settings Page',
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration', 'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization&apos;s <strong><a href="https://console.cloud.google.com/" target="_blank">Google developer console <i class="fa fa-external-link" aria-hidden="true"></i></a></strong>.',
'google_login' => 'Google Workspace Login Settings',
'enable_google_login' => 'Enable users to login with Google Workspace',
'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ',
]; ];

View file

@ -6,7 +6,7 @@ return array(
'declined' => 'Jy het hierdie bate suksesvol geweier.', 'declined' => 'Jy het hierdie bate suksesvol geweier.',
'bulk_manager_warn' => 'Jou gebruikers is suksesvol opgedateer, maar jou bestuurderinskrywing is nie gestoor nie, want die bestuurder wat jy gekies het, was ook in die gebruikerslys om geredigeer te word, en gebruikers mag nie hul eie bestuurder wees nie. Kies asseblief u gebruikers weer, behalwe die bestuurder.', 'bulk_manager_warn' => 'Jou gebruikers is suksesvol opgedateer, maar jou bestuurderinskrywing is nie gestoor nie, want die bestuurder wat jy gekies het, was ook in die gebruikerslys om geredigeer te word, en gebruikers mag nie hul eie bestuurder wees nie. Kies asseblief u gebruikers weer, behalwe die bestuurder.',
'user_exists' => 'Gebruiker bestaan reeds!', 'user_exists' => 'Gebruiker bestaan reeds!',
'user_not_found' => 'Gebruiker [: id] bestaan nie.', 'user_not_found' => 'User does not exist.',
'user_login_required' => 'Die aanmeldingsveld is nodig', 'user_login_required' => 'Die aanmeldingsveld is nodig',
'user_password_required' => 'Die wagwoord is nodig.', 'user_password_required' => 'Die wagwoord is nodig.',
'insufficient_permissions' => 'Onvoldoende Toestemmings.', 'insufficient_permissions' => 'Onvoldoende Toestemmings.',

View file

@ -12,5 +12,8 @@ return [
'remember_me' => 'Onthou my', 'remember_me' => 'Onthou my',
'username_help_top' => 'Enter your <strong>username</strong> to be emailed a password reset link.', 'username_help_top' => 'Enter your <strong>username</strong> to be emailed a password reset link.',
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ', 'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
]; 'google_login' => 'Or login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.',
];

View file

@ -92,6 +92,7 @@ return [
'debug_warning_text' => 'Hierdie program word uitgevoer in die produksiemodus met debugging aangeskakel. Dit kan sensitiewe data blootstel indien u aansoek vir die buitewêreld toeganklik is. Deaktiveer debug-modus deur die <code>APP_DEBUG</code>-waarde in jou <code>.env</code>-lêer te stel na <code>false</code>.', 'debug_warning_text' => 'Hierdie program word uitgevoer in die produksiemodus met debugging aangeskakel. Dit kan sensitiewe data blootstel indien u aansoek vir die buitewêreld toeganklik is. Deaktiveer debug-modus deur die <code>APP_DEBUG</code>-waarde in jou <code>.env</code>-lêer te stel na <code>false</code>.',
'delete' => 'verwyder', 'delete' => 'verwyder',
'delete_confirm' => 'Are you sure you wish to delete :item?', 'delete_confirm' => 'Are you sure you wish to delete :item?',
'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.',
'deleted' => 'geskrap', 'deleted' => 'geskrap',
'delete_seats' => 'Plekke verwyder', 'delete_seats' => 'Plekke verwyder',
'deletion_failed' => 'Deletion failed', 'deletion_failed' => 'Deletion failed',
@ -439,4 +440,13 @@ return [
'setup_migration_output' => 'Migration output:', 'setup_migration_output' => 'Migration output:',
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.',
'confirm' => 'Confirm',
'autoassign_licenses' => 'Auto-Assign Licenses',
'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.',
'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)',
'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.',
'modal_confirm_generic' => 'Are you sure?',
'cannot_be_deleted' => 'This item cannot be deleted',
'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.',
]; ];

View file

@ -74,6 +74,7 @@ return [
'your_credentials' => 'Jou Snipe-IT-referenties', 'your_credentials' => 'Jou Snipe-IT-referenties',
'Accessory_Checkin_Notification' => 'Accessory checked in', 'Accessory_Checkin_Notification' => 'Accessory checked in',
'Asset_Checkin_Notification' => 'Asset checked in', 'Asset_Checkin_Notification' => 'Asset checked in',
'Asset_Checkout_Notification' => 'Asset checked out',
'License_Checkin_Notification' => 'License checked in', 'License_Checkin_Notification' => 'License checked in',
'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Report' => 'Expected asset checkin report',
'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching',

View file

@ -67,6 +67,8 @@ return [
'array' => 'Die: Attribuut moet ten minste: min items hê.', 'array' => 'Die: Attribuut moet ten minste: min items hê.',
], ],
'starts_with' => 'The :attribute must start with one of the following: :values.', 'starts_with' => 'The :attribute must start with one of the following: :values.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'not_in' => 'Die gekose: attribuut is ongeldig.', 'not_in' => 'Die gekose: attribuut is ongeldig.',
'numeric' => 'Die: Attribuut moet \'n nommer wees.', 'numeric' => 'Die: Attribuut moet \'n nommer wees.',
'present' => 'Die: attribuut veld moet teenwoordig wees.', 'present' => 'Die: attribuut veld moet teenwoordig wees.',

View file

@ -17,5 +17,6 @@ return array(
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.', 'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.', 'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
'clone' => 'Clone Accessory', 'clone' => 'Clone Accessory',
'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.',
); );

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Component was not checked out, please try again', 'error' => 'Component was not checked out, please try again',
'success' => 'Component checked out successfully.', 'success' => 'Component checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Consumable was not checked out, please try again', 'error' => 'Consumable was not checked out, please try again',
'success' => 'Consumable checked out successfully.', 'success' => 'Consumable checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -49,4 +49,6 @@ return [
'unique' => 'Unique', 'unique' => 'Unique',
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
'display_in_user_view_table' => 'Visible to User', 'display_in_user_view_table' => 'Visible to User',
'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset',
'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets',
]; ];

View file

@ -23,6 +23,7 @@ return [
'restore' => 'Restore Asset', 'restore' => 'Restore Asset',
'pending' => 'Pending', 'pending' => 'Pending',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.',
'view' => 'View Asset', 'view' => 'View Asset',
'csv_error' => 'You have an error in your CSV file:', 'csv_error' => 'You have an error in your CSV file:',
'import_text' => ' 'import_text' => '

View file

@ -8,6 +8,7 @@ return [
'change' => 'In/Out', 'change' => 'In/Out',
'checkout_date' => 'Checkout Date', 'checkout_date' => 'Checkout Date',
'checkoutto' => 'Checked Out', 'checkoutto' => 'Checked Out',
'components_cost' => 'Total Components Cost',
'current_value' => 'Current Value', 'current_value' => 'Current Value',
'diff' => 'Diff', 'diff' => 'Diff',
'dl_csv' => 'Download CSV', 'dl_csv' => 'Download CSV',

View file

@ -1,8 +1,8 @@
<?php <?php
return array( return array(
'about_licenses_title' => 'About Licenses', 'about_licenses_title' => 'About Licenses',
'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals',
'checkin' => 'Checkin License Seat', 'checkin' => 'Checkin License Seat',
'checkout_history' => 'Checkout History', 'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat', 'checkout' => 'Checkout License Seat',
@ -18,4 +18,30 @@ return array(
'software_licenses' => 'Software Licenses', 'software_licenses' => 'Software Licenses',
'user' => 'User', 'user' => 'User',
'view' => 'View License', 'view' => 'View License',
'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.',
'bulk' =>
[
'checkin_all' => [
'button' => 'Checkin All Seats',
'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.',
'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets',
'disabled_tooltip' => 'This is disabled because there are no seats currently checked out',
'success' => 'License successfully checked in! | All licenses were successfully checked in!',
'log_msg' => 'Checked in via bulk license checkout in license GUI',
],
'checkout_all' => [
'button' => 'Checkout All Seats',
'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.',
'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users',
'disabled_tooltip' => 'This is disabled because there are no seats currently available',
'success' => 'License successfully checked out! | :count licenses were successfully checked out!',
'error_no_seats' => 'There are no remaining seats left for this license.',
'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.',
'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.',
'log_msg' => 'Checked out via bulk license checkout in license GUI',
],
],
); );

View file

@ -2,6 +2,7 @@
return array( return array(
'support_url_help' => 'Use <code>{LOCALE}</code> and <code>{SERIAL}</code> in your URL as variables to have those values auto-populate when viewing assets.',
'does_not_exist' => 'Manufacturer does not exist.', 'does_not_exist' => 'Manufacturer does not exist.',
'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ',

View file

@ -10,6 +10,7 @@ return array(
'support_email' => 'Support Email', 'support_email' => 'Support Email',
'support_phone' => 'Support Phone', 'support_phone' => 'Support Phone',
'support_url' => 'Support URL', 'support_url' => 'Support URL',
'warranty_lookup_url' => 'Warranty Lookup URL',
'update' => 'Update Manufacturer', 'update' => 'Update Manufacturer',
'url' => 'URL', 'url' => 'URL',

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Restoring from Backup', 'backups_restoring' => 'Restoring from Backup',
'backups_upload' => 'Upload Backup', 'backups_upload' => 'Upload Backup',
'backups_path' => 'Backups on the server are stored in <code>:path</code>', 'backups_path' => 'Backups on the server are stored in <code>:path</code>',
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.',
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
'barcode_settings' => 'Barcode Settings', 'barcode_settings' => 'Barcode Settings',
@ -86,6 +86,8 @@ return [
'ldap_settings' => 'LDAP Settings', 'ldap_settings' => 'LDAP Settings',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_client_tls_key' => 'LDAP Client-Side TLS key', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key',
'ldap_location' => 'LDAP Location',
'ldap_location_help' => 'The Ldap Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_manager' => 'LDAP Manager', 'ldap_manager' => 'LDAP Manager',
@ -328,4 +330,9 @@ return [
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'ldap_settings_link' => 'LDAP Settings Page', 'ldap_settings_link' => 'LDAP Settings Page',
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration', 'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization&apos;s <strong><a href="https://console.cloud.google.com/" target="_blank">Google developer console <i class="fa fa-external-link" aria-hidden="true"></i></a></strong>.',
'google_login' => 'Google Workspace Login Settings',
'enable_google_login' => 'Enable users to login with Google Workspace',
'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ',
]; ];

View file

@ -6,7 +6,7 @@ return array(
'declined' => 'You have successfully declined this asset.', 'declined' => 'You have successfully declined this asset.',
'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.',
'user_exists' => 'User already exists!', 'user_exists' => 'User already exists!',
'user_not_found' => 'User [:id] does not exist.', 'user_not_found' => 'User does not exist.',
'user_login_required' => 'The login field is required', 'user_login_required' => 'The login field is required',
'user_password_required' => 'The password is required.', 'user_password_required' => 'The password is required.',
'insufficient_permissions' => 'Insufficient Permissions.', 'insufficient_permissions' => 'Insufficient Permissions.',

View file

@ -12,5 +12,8 @@ return [
'remember_me' => 'Remember Me', 'remember_me' => 'Remember Me',
'username_help_top' => 'Enter your <strong>username</strong> to be emailed a password reset link.', 'username_help_top' => 'Enter your <strong>username</strong> to be emailed a password reset link.',
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ', 'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
]; 'google_login' => 'Or login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.',
];

View file

@ -92,6 +92,7 @@ return [
'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the <code>APP_DEBUG</code> value in your <code>.env</code> file to <code>false</code>.', 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the <code>APP_DEBUG</code> value in your <code>.env</code> file to <code>false</code>.',
'delete' => 'Delete', 'delete' => 'Delete',
'delete_confirm' => 'Are you sure you wish to delete :item?', 'delete_confirm' => 'Are you sure you wish to delete :item?',
'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.',
'deleted' => 'Deleted', 'deleted' => 'Deleted',
'delete_seats' => 'Deleted Seats', 'delete_seats' => 'Deleted Seats',
'deletion_failed' => 'Deletion failed', 'deletion_failed' => 'Deletion failed',
@ -439,4 +440,13 @@ return [
'setup_migration_output' => 'Migration output:', 'setup_migration_output' => 'Migration output:',
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.',
'confirm' => 'Confirm',
'autoassign_licenses' => 'Auto-Assign Licenses',
'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.',
'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)',
'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.',
'modal_confirm_generic' => 'Are you sure?',
'cannot_be_deleted' => 'This item cannot be deleted',
'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.',
]; ];

View file

@ -75,6 +75,7 @@ return [
'your_credentials' => 'Your Snipe-IT credentials', 'your_credentials' => 'Your Snipe-IT credentials',
'Accessory_Checkin_Notification' => 'Accessory checked in', 'Accessory_Checkin_Notification' => 'Accessory checked in',
'Asset_Checkin_Notification' => 'Asset checked in', 'Asset_Checkin_Notification' => 'Asset checked in',
'Asset_Checkout_Notification' => 'Asset checked out',
'License_Checkin_Notification' => 'License checked in', 'License_Checkin_Notification' => 'License checked in',
'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Report' => 'Expected asset checkin report',
'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching',

View file

@ -67,6 +67,8 @@ return [
'array' => 'The :attribute must have at least :min items.', 'array' => 'The :attribute must have at least :min items.',
], ],
'starts_with' => 'The :attribute must start with one of the following: :values.', 'starts_with' => 'The :attribute must start with one of the following: :values.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'not_in' => 'The selected :attribute is invalid.', 'not_in' => 'The selected :attribute is invalid.',
'numeric' => 'The :attribute must be a number.', 'numeric' => 'The :attribute must be a number.',
'present' => 'The :attribute field must be present.', 'present' => 'The :attribute field must be present.',

View file

@ -17,5 +17,6 @@ return array(
'use_default_eula' => 'قم باستعمال <a href="#" data-toggle="modal" data-target="#eulaModal">اتفاقية ترخيص المستخدم الافتراضية الاساسية</a>.', 'use_default_eula' => 'قم باستعمال <a href="#" data-toggle="modal" data-target="#eulaModal">اتفاقية ترخيص المستخدم الافتراضية الاساسية</a>.',
'use_default_eula_disabled' => '<del>استخدام (اتفاقية ترخيص المستخدم) الافتراضية الأساسية بدلا من ذلك.</del> لم يتم تحديد (اتفاقية ترخيص المستخدم) الافتراضية الأساسية. الرجاء إضافتها في الإعدادات.', 'use_default_eula_disabled' => '<del>استخدام (اتفاقية ترخيص المستخدم) الافتراضية الأساسية بدلا من ذلك.</del> لم يتم تحديد (اتفاقية ترخيص المستخدم) الافتراضية الأساسية. الرجاء إضافتها في الإعدادات.',
'clone' => 'استنساخ الملحق', 'clone' => 'استنساخ الملحق',
'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.',
); );

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'لم تتم عملية اخراج المكون، الرجاء المحاولة مرة اخرى', 'error' => 'لم تتم عملية اخراج المكون، الرجاء المحاولة مرة اخرى',
'success' => 'تم إخراج المكون بنجاح.', 'success' => 'تم إخراج المكون بنجاح.',
'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.' 'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.',
'unavailable' => 'لا توجد عناصر كافية remaining: :remaining متبقية، :requested مطلوبة ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'لم يتم إخراج المادة الإستهلاكية، الرجاء المحاولة مرة اخرى', 'error' => 'لم يتم إخراج المادة الإستهلاكية، الرجاء المحاولة مرة اخرى',
'success' => 'تم إخراج المادة الإستهلاكية بنجاح.', 'success' => 'تم إخراج المادة الإستهلاكية بنجاح.',
'user_does_not_exist' => 'هذا المستخدم غير صحيح. الرجاء المحاولة مرة أخرى.' 'user_does_not_exist' => 'هذا المستخدم غير صحيح. الرجاء المحاولة مرة أخرى.',
'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -49,4 +49,6 @@ return [
'unique' => 'غير مكرر', 'unique' => 'غير مكرر',
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
'display_in_user_view_table' => 'Visible to User', 'display_in_user_view_table' => 'Visible to User',
'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset',
'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets',
]; ];

View file

@ -48,7 +48,7 @@ return [
'asset_location_update_default' => 'Update only default location', 'asset_location_update_default' => 'Update only default location',
'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.', 'asset_not_deployable' => 'That asset status is not deployable. This asset cannot be checked out.',
'asset_deployable' => 'That status is deployable. This asset can be checked out.', 'asset_deployable' => 'That status is deployable. This asset can be checked out.',
'processing_spinner' => 'Processing... (This might take a bit of time on large files)', 'processing_spinner' => 'معالجة... (قد يستغرق هذا بعض الوقت على ملفات كبيرة)',
'optional_infos' => 'Optional Information', 'optional_infos' => 'Optional Information',
'order_details' => 'Order Related Information' 'order_details' => 'Order Related Information'
]; ];

View file

@ -23,6 +23,7 @@ return [
'restore' => 'استعادة الأصل', 'restore' => 'استعادة الأصل',
'pending' => 'قيد الانتظار', 'pending' => 'قيد الانتظار',
'undeployable' => 'غير قابل للتوزيع', 'undeployable' => 'غير قابل للتوزيع',
'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.',
'view' => 'عرض الأصل', 'view' => 'عرض الأصل',
'csv_error' => 'You have an error in your CSV file:', 'csv_error' => 'You have an error in your CSV file:',
'import_text' => ' 'import_text' => '

View file

@ -8,6 +8,7 @@ return [
'change' => 'ادخال \\ اخراج', 'change' => 'ادخال \\ اخراج',
'checkout_date' => 'تاريخ الاخراج', 'checkout_date' => 'تاريخ الاخراج',
'checkoutto' => 'الاخراج', 'checkoutto' => 'الاخراج',
'components_cost' => 'Total Components Cost',
'current_value' => 'Current Value', 'current_value' => 'Current Value',
'diff' => 'الفرق', 'diff' => 'الفرق',
'dl_csv' => 'التنزيل كملف CSV', 'dl_csv' => 'التنزيل كملف CSV',

View file

@ -1,8 +1,8 @@
<?php <?php
return array( return array(
'about_licenses_title' => 'حول التراخيص', 'about_licenses_title' => 'حول التراخيص',
'about_licenses' => 'تستخدم التراخيص لتتبع البرمجيات. كل لديه عدد محدد من المقاعد التي يمكن اخراجها للأفراد', 'about_licenses' => 'تستخدم التراخيص لتتبع البرمجيات. كل لديه عدد محدد من المقاعد التي يمكن اخراجها للأفراد',
'checkin' => 'ادخال مقعد الترخيص', 'checkin' => 'ادخال مقعد الترخيص',
'checkout_history' => 'أرشيف الاخراج', 'checkout_history' => 'أرشيف الاخراج',
'checkout' => 'اخراج مقعد ترخيص', 'checkout' => 'اخراج مقعد ترخيص',
@ -18,4 +18,30 @@ return array(
'software_licenses' => 'تراخيص البرامج', 'software_licenses' => 'تراخيص البرامج',
'user' => 'مستخدم', 'user' => 'مستخدم',
'view' => 'عرض الترخيص', 'view' => 'عرض الترخيص',
'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.',
'bulk' =>
[
'checkin_all' => [
'button' => 'Checkin All Seats',
'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.',
'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets',
'disabled_tooltip' => 'This is disabled because there are no seats currently checked out',
'success' => 'License successfully checked in! | All licenses were successfully checked in!',
'log_msg' => 'Checked in via bulk license checkout in license GUI',
],
'checkout_all' => [
'button' => 'Checkout All Seats',
'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.',
'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users',
'disabled_tooltip' => 'This is disabled because there are no seats currently available',
'success' => 'License successfully checked out! | :count licenses were successfully checked out!',
'error_no_seats' => 'There are no remaining seats left for this license.',
'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.',
'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.',
'log_msg' => 'Checked out via bulk license checkout in license GUI',
],
],
); );

View file

@ -2,6 +2,7 @@
return array( return array(
'support_url_help' => 'Use <code>{LOCALE}</code> and <code>{SERIAL}</code> in your URL as variables to have those values auto-populate when viewing assets.',
'does_not_exist' => 'الشركة المصنعة غير موجودة.', 'does_not_exist' => 'الشركة المصنعة غير موجودة.',
'assoc_users' => 'هذه الشركة المصنعة مرتبطة حاليا مع موديل واحد على الأقل وبالتالي لا يمكن حذفها. يرجى تحديث الموديلات الخاصة بك بحيث لا تشير لهذه الشركة المصنعة وحاول مرة أخرى. ', 'assoc_users' => 'هذه الشركة المصنعة مرتبطة حاليا مع موديل واحد على الأقل وبالتالي لا يمكن حذفها. يرجى تحديث الموديلات الخاصة بك بحيث لا تشير لهذه الشركة المصنعة وحاول مرة أخرى. ',

View file

@ -10,6 +10,7 @@ return array(
'support_email' => 'دعم البريد الإلكتروني', 'support_email' => 'دعم البريد الإلكتروني',
'support_phone' => 'دعم الهاتف', 'support_phone' => 'دعم الهاتف',
'support_url' => 'رابط الدعم التقني', 'support_url' => 'رابط الدعم التقني',
'warranty_lookup_url' => 'Warranty Lookup URL',
'update' => 'تحديث الشركة المصنعة', 'update' => 'تحديث الشركة المصنعة',
'url' => 'الرابط', 'url' => 'الرابط',

View file

@ -6,7 +6,7 @@ return array(
'deleted' => 'تم حذف هذا الموديل.', 'deleted' => 'تم حذف هذا الموديل.',
'bulk_delete' => 'حذف موديلات الاصول بالجملة', 'bulk_delete' => 'حذف موديلات الاصول بالجملة',
'bulk_delete_help' => 'استخدم مربعات الاختيار أدناه لتأكيد حذف موديلات الأصول المحددة. لا يمكن حذف موديلات الأصول التي تحتوي على أصول مرتبطة بها إلى أن يتم ربط الأصول بموديل مختلف.', 'bulk_delete_help' => 'استخدم مربعات الاختيار أدناه لتأكيد حذف موديلات الأصول المحددة. لا يمكن حذف موديلات الأصول التي تحتوي على أصول مرتبطة بها إلى أن يتم ربط الأصول بموديل مختلف.',
'bulk_delete_warn' => 'You are about to delete one asset model.|You are about to delete :model_count asset models.', 'bulk_delete_warn' => 'أنت على وشك حذف نموذج واحد للأصول.|أنت على وشك حذف :model_count من نماذج الأصول.',
'restore' => 'إستعادة الموديل', 'restore' => 'إستعادة الموديل',
'requestable' => 'يمكن للمستخدمين طلب هذا الموديل', 'requestable' => 'يمكن للمستخدمين طلب هذا الموديل',
'show_mac_address' => 'عرض حقل عنوان ماك MAC في الأصول لهذا الموديل', 'show_mac_address' => 'عرض حقل عنوان ماك MAC في الأصول لهذا الموديل',

View file

@ -32,14 +32,14 @@ return array(
'bulkedit' => array( 'bulkedit' => array(
'error' => 'لم يتم تغيير أي حقول، لذلك لم يتم تحديث أي شيء.', 'error' => 'لم يتم تغيير أي حقول، لذلك لم يتم تحديث أي شيء.',
'success' => 'Model successfully updated. |:model_count models successfully updated.', 'success' => 'تم تحديث النموذج بنجاح. |تم تحديث :model_count نموذج بنجاح.',
'warn' => 'You are about to update the properies of the following model: |You are about to edit the properties of the following :model_count models:', 'warn' => 'أنت على وشك تحديث خصائص النموذج التالي model: |أنت على وشك تعديل خصائص :model_count models:',
), ),
'bulkdelete' => array( 'bulkdelete' => array(
'error' => 'لم يتم اختيار أي موديلات، لذلك لم يتم حذف أي شيء.', 'error' => 'لم يتم اختيار أي موديلات، لذلك لم يتم حذف أي شيء.',
'success' => 'Model deleted!|:success_count models deleted!', 'success' => 'تم حذف النموذج!|تم حذف :success_count نموذج!',
'success_partial' => 'تم حذف:success_count: من الموديلات، ومع ذلك تعذر حذف fail_count: نظرًا لأنها لا تزال تحتوي على أصول مقترنة بها.' 'success_partial' => 'تم حذف:success_count: من الموديلات، ومع ذلك تعذر حذف fail_count: نظرًا لأنها لا تزال تحتوي على أصول مقترنة بها.'
), ),

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Restoring from Backup', 'backups_restoring' => 'Restoring from Backup',
'backups_upload' => 'Upload Backup', 'backups_upload' => 'Upload Backup',
'backups_path' => 'Backups on the server are stored in <code>:path</code>', 'backups_path' => 'Backups on the server are stored in <code>:path</code>',
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'سيتم تسجيل الخروج من جميع المستخدمين الحاليين، بما في ذلك انت، بمجرد اكتمال الاستعادة.', 'backups_logged_out' => 'سيتم تسجيل الخروج من جميع المستخدمين الحاليين، بما في ذلك انت، بمجرد اكتمال الاستعادة.',
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
'barcode_settings' => 'إعدادات الباركود', 'barcode_settings' => 'إعدادات الباركود',
@ -86,6 +86,8 @@ return [
'ldap_settings' => 'إعدادات لداب', 'ldap_settings' => 'إعدادات لداب',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_client_tls_key' => 'LDAP Client-Side TLS key', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key',
'ldap_location' => 'LDAP Location',
'ldap_location_help' => 'The Ldap Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'أدخل اسم مستخدم وكلمة مرور LDAP من الاسم المميز الأساسي DN الذي حددته أعلاه لاختبار ما إذا كان قد تمت تهيئة معلومات تسجيل الدخول إلى LDAP بشكل صحيح أم لا. يجب حفظ تحديث LDAP الخاص بك أولا.', 'ldap_login_test_help' => 'أدخل اسم مستخدم وكلمة مرور LDAP من الاسم المميز الأساسي DN الذي حددته أعلاه لاختبار ما إذا كان قد تمت تهيئة معلومات تسجيل الدخول إلى LDAP بشكل صحيح أم لا. يجب حفظ تحديث LDAP الخاص بك أولا.',
'ldap_login_sync_help' => 'هذا يختبر فقط أن LDAP يستطيع المزامنة بشكل صحيح. إذا كان استعلام التوثيق الى LDAP الخاص بك غير صحيح، قد لا يزال المستخدمون غير قادرين على تسجيل الدخول. يجب عليك اولا حفظ اي تغييرات في إعدادات LDAP.', 'ldap_login_sync_help' => 'هذا يختبر فقط أن LDAP يستطيع المزامنة بشكل صحيح. إذا كان استعلام التوثيق الى LDAP الخاص بك غير صحيح، قد لا يزال المستخدمون غير قادرين على تسجيل الدخول. يجب عليك اولا حفظ اي تغييرات في إعدادات LDAP.',
'ldap_manager' => 'LDAP Manager', 'ldap_manager' => 'LDAP Manager',
@ -328,4 +330,9 @@ return [
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'ldap_settings_link' => 'LDAP Settings Page', 'ldap_settings_link' => 'LDAP Settings Page',
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration', 'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization&apos;s <strong><a href="https://console.cloud.google.com/" target="_blank">Google developer console <i class="fa fa-external-link" aria-hidden="true"></i></a></strong>.',
'google_login' => 'Google Workspace Login Settings',
'enable_google_login' => 'Enable users to login with Google Workspace',
'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ',
]; ];

View file

@ -50,5 +50,5 @@ return [
'email_credentials_text' => 'Email my credentials to the email address above', 'email_credentials_text' => 'Email my credentials to the email address above',
'next_save_user' => 'Next: Save User', 'next_save_user' => 'Next: Save User',
'all_assigned_list_generation' => 'تم إنشاؤها في:', 'all_assigned_list_generation' => 'تم إنشاؤها في:',
'email_user_creds_on_create' => 'Email this user their credentials?', 'email_user_creds_on_create' => 'إرسال بيانات دخول هذا المستخدم بالبريد الإلكتروني؟',
]; ];

View file

@ -6,7 +6,7 @@ return array(
'declined' => 'لقد رفضت هذا الأصل بنجاح.', 'declined' => 'لقد رفضت هذا الأصل بنجاح.',
'bulk_manager_warn' => 'تم تحديث المستخدمين بنجاح، ولكن لم يتم حفظ إدخال مديرك لأن المدير الذي حددته كان أيضا في قائمة المستخدمين التي سيتم تعديلها، وقد لا يكون المستخدمون مديرهم الخاص. يرجى تحديد المستخدمين مرة أخرى، باستثناء المدير.', 'bulk_manager_warn' => 'تم تحديث المستخدمين بنجاح، ولكن لم يتم حفظ إدخال مديرك لأن المدير الذي حددته كان أيضا في قائمة المستخدمين التي سيتم تعديلها، وقد لا يكون المستخدمون مديرهم الخاص. يرجى تحديد المستخدمين مرة أخرى، باستثناء المدير.',
'user_exists' => 'المستخدم موجود مسبقاً!', 'user_exists' => 'المستخدم موجود مسبقاً!',
'user_not_found' => 'المستخدم :id غير موجود.', 'user_not_found' => 'User does not exist.',
'user_login_required' => 'حقل تسجيل الدخول اجباري', 'user_login_required' => 'حقل تسجيل الدخول اجباري',
'user_password_required' => 'كلمة المرور اجبارية.', 'user_password_required' => 'كلمة المرور اجبارية.',
'insufficient_permissions' => 'صلاحيات غير كافية.', 'insufficient_permissions' => 'صلاحيات غير كافية.',

View file

@ -12,5 +12,8 @@ return [
'remember_me' => 'تذكرني', 'remember_me' => 'تذكرني',
'username_help_top' => 'أدخل اسم المستخدم الخاص بك <strong></strong> ليتم إرسال رابط إعادة تعيين كلمة المرور إلى البريد الإلكتروني.', 'username_help_top' => 'أدخل اسم المستخدم الخاص بك <strong></strong> ليتم إرسال رابط إعادة تعيين كلمة المرور إلى البريد الإلكتروني.',
'username_help_bottom' => 'قد يكون اسم المستخدم وعنوان البريد الإلكتروني الخاصين بك متماثلين، ولكن قد لا يكونا كذلك، بناءً على الإعدادات الخاصة بك. إذا كنت لا تستطيع تذكر اسم المستخدم الخاص بك، اتصل بالمسؤول. لن يتم إرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني إلى أسماء المستخدمين التي لا تحتوي على عنوان بريد إلكتروني مرتبط بها ', 'username_help_bottom' => 'قد يكون اسم المستخدم وعنوان البريد الإلكتروني الخاصين بك متماثلين، ولكن قد لا يكونا كذلك، بناءً على الإعدادات الخاصة بك. إذا كنت لا تستطيع تذكر اسم المستخدم الخاص بك، اتصل بالمسؤول. لن يتم إرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني إلى أسماء المستخدمين التي لا تحتوي على عنوان بريد إلكتروني مرتبط بها ',
]; 'google_login' => 'Or login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.',
];

View file

@ -92,6 +92,7 @@ return [
'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة <code>APP_DEBUG</code> في ملف <code>.env</code> إلى <code>false</code>.', 'debug_warning_text' => 'هذا التطبيق يعمل في وضع الإنتاج مع تمكين التصحيح. هذا يمكن أن يعرض البيانات الحساسة إذا كان التطبيق الخاص بك هو في متناول العالم الخارجي. تعطيل وضع التصحيح عن طريق تعيين قيمة <code>APP_DEBUG</code> في ملف <code>.env</code> إلى <code>false</code>.',
'delete' => 'حذف', 'delete' => 'حذف',
'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟', 'delete_confirm' => 'هل أنت متأكد من حذف :المنتج؟',
'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.',
'deleted' => 'تم حذفها', 'deleted' => 'تم حذفها',
'delete_seats' => 'المقاعد المحذوفة', 'delete_seats' => 'المقاعد المحذوفة',
'deletion_failed' => 'فشل الحذف', 'deletion_failed' => 'فشل الحذف',
@ -439,4 +440,13 @@ return [
'setup_migration_output' => 'ناتج الهجرة:', 'setup_migration_output' => 'ناتج الهجرة:',
'setup_migration_create_user' => 'التالي: إنشاء مستخدم', 'setup_migration_create_user' => 'التالي: إنشاء مستخدم',
'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.',
'confirm' => 'Confirm',
'autoassign_licenses' => 'Auto-Assign Licenses',
'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.',
'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)',
'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.',
'modal_confirm_generic' => 'Are you sure?',
'cannot_be_deleted' => 'This item cannot be deleted',
'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.',
]; ];

View file

@ -74,6 +74,7 @@ return [
'your_credentials' => 'أوراق اعتماد قنص-إيت الخاص بك', 'your_credentials' => 'أوراق اعتماد قنص-إيت الخاص بك',
'Accessory_Checkin_Notification' => 'تم تسحيل الملحق', 'Accessory_Checkin_Notification' => 'تم تسحيل الملحق',
'Asset_Checkin_Notification' => 'تم تسجيل الأصل', 'Asset_Checkin_Notification' => 'تم تسجيل الأصل',
'Asset_Checkout_Notification' => 'Asset checked out',
'License_Checkin_Notification' => 'تم تسجيل الرخصة', 'License_Checkin_Notification' => 'تم تسجيل الرخصة',
'Expected_Checkin_Report' => 'تقرير تسجيل الأصول المتوقع', 'Expected_Checkin_Report' => 'تقرير تسجيل الأصول المتوقع',
'Expected_Checkin_Notification' => 'تذكير: تاريخ تحقق :name يقترب من الموعد النهائي', 'Expected_Checkin_Notification' => 'تذكير: تاريخ تحقق :name يقترب من الموعد النهائي',

View file

@ -67,6 +67,8 @@ return [
'array' => 'يجب أن تحتوي :attribute على الأقل :min من العناصر.', 'array' => 'يجب أن تحتوي :attribute على الأقل :min من العناصر.',
], ],
'starts_with' => 'The :attribute must start with one of the following: :values.', 'starts_with' => 'The :attribute must start with one of the following: :values.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'not_in' => ':attribute المحدد غير صالح.', 'not_in' => ':attribute المحدد غير صالح.',
'numeric' => 'يجب أن يكون :attribute رقما.', 'numeric' => 'يجب أن يكون :attribute رقما.',
'present' => 'يجب أن يكون :attribute موجود.', 'present' => 'يجب أن يكون :attribute موجود.',

View file

@ -17,5 +17,6 @@ return array(
'use_default_eula' => 'Използване на <a href="#" data-toggle="modal" data-target="#eulaModal">EULA по подразбиране</a>.', 'use_default_eula' => 'Използване на <a href="#" data-toggle="modal" data-target="#eulaModal">EULA по подразбиране</a>.',
'use_default_eula_disabled' => '<del>Използване на EULA по подразбиране</del> Няма EULA по подразбиране. Добавете я в Настройки.', 'use_default_eula_disabled' => '<del>Използване на EULA по подразбиране</del> Няма EULA по подразбиране. Добавете я в Настройки.',
'clone' => 'Clone Accessory', 'clone' => 'Clone Accessory',
'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.',
); );

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Компонентът не беше отписан, моля опитайте отново.', 'error' => 'Компонентът не беше отписан, моля опитайте отново.',
'success' => 'Компонентът отписан успешно.', 'success' => 'Компонентът отписан успешно.',
'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.',
'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Консумативът не беше изписан. Моля опитайте отново.', 'error' => 'Консумативът не беше изписан. Моля опитайте отново.',
'success' => 'Консумативът изписан успешно.', 'success' => 'Консумативът изписан успешно.',
'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.',
'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -49,4 +49,6 @@ return [
'unique' => 'Unique', 'unique' => 'Unique',
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
'display_in_user_view_table' => 'Visible to User', 'display_in_user_view_table' => 'Visible to User',
'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset',
'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets',
]; ];

View file

@ -23,6 +23,7 @@ return [
'restore' => 'Възстановяване на актив', 'restore' => 'Възстановяване на актив',
'pending' => 'Предстоящ', 'pending' => 'Предстоящ',
'undeployable' => 'Не може да бъде предоставян', 'undeployable' => 'Не може да бъде предоставян',
'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.',
'view' => 'Преглед на актив', 'view' => 'Преглед на актив',
'csv_error' => 'Имате грешка във вашият CSV файл:', 'csv_error' => 'Имате грешка във вашият CSV файл:',
'import_text' => ' 'import_text' => '

View file

@ -8,6 +8,7 @@ return [
'change' => 'Предоставяне', 'change' => 'Предоставяне',
'checkout_date' => 'Дата на изписване', 'checkout_date' => 'Дата на изписване',
'checkoutto' => 'Изписан', 'checkoutto' => 'Изписан',
'components_cost' => 'Total Components Cost',
'current_value' => 'Текуща стойност', 'current_value' => 'Текуща стойност',
'diff' => 'Разлика', 'diff' => 'Разлика',
'dl_csv' => 'Сваляне на CSV', 'dl_csv' => 'Сваляне на CSV',

View file

@ -1,8 +1,8 @@
<?php <?php
return array( return array(
'about_licenses_title' => 'Относно лицензи', 'about_licenses_title' => 'Относно лицензи',
'about_licenses' => 'Лицензите се използват за проследяване на софтуер. Те имат определен брой места, които могат да бъдат отписани към лица', 'about_licenses' => 'Лицензите се използват за проследяване на софтуер. Те имат определен брой места, които могат да бъдат отписани към лица',
'checkin' => 'Вписване на потребителски лиценз', 'checkin' => 'Вписване на потребителски лиценз',
'checkout_history' => 'История на изписванията', 'checkout_history' => 'История на изписванията',
'checkout' => 'Изписване на потребителски лиценз', 'checkout' => 'Изписване на потребителски лиценз',
@ -18,4 +18,30 @@ return array(
'software_licenses' => 'Софтуерни лицензи', 'software_licenses' => 'Софтуерни лицензи',
'user' => 'Потребител', 'user' => 'Потребител',
'view' => 'Преглед на лиценз', 'view' => 'Преглед на лиценз',
'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.',
'bulk' =>
[
'checkin_all' => [
'button' => 'Checkin All Seats',
'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.',
'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets',
'disabled_tooltip' => 'This is disabled because there are no seats currently checked out',
'success' => 'License successfully checked in! | All licenses were successfully checked in!',
'log_msg' => 'Checked in via bulk license checkout in license GUI',
],
'checkout_all' => [
'button' => 'Checkout All Seats',
'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.',
'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users',
'disabled_tooltip' => 'This is disabled because there are no seats currently available',
'success' => 'License successfully checked out! | :count licenses were successfully checked out!',
'error_no_seats' => 'There are no remaining seats left for this license.',
'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.',
'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.',
'log_msg' => 'Checked out via bulk license checkout in license GUI',
],
],
); );

View file

@ -2,6 +2,7 @@
return array( return array(
'support_url_help' => 'Use <code>{LOCALE}</code> and <code>{SERIAL}</code> in your URL as variables to have those values auto-populate when viewing assets.',
'does_not_exist' => 'Несъществуващ производител.', 'does_not_exist' => 'Несъществуващ производител.',
'assoc_users' => 'Този производител е асоцииран с поне един от моделите и не може да бъде изтрит. Моля, променете връзките на моделите по отношение на този производител и опитайте отново. ', 'assoc_users' => 'Този производител е асоцииран с поне един от моделите и не може да бъде изтрит. Моля, променете връзките на моделите по отношение на този производител и опитайте отново. ',

View file

@ -10,6 +10,7 @@ return array(
'support_email' => 'Email за поддръжка', 'support_email' => 'Email за поддръжка',
'support_phone' => 'Телефон за поддръжка', 'support_phone' => 'Телефон за поддръжка',
'support_url' => 'URL адрес за поддръжка', 'support_url' => 'URL адрес за поддръжка',
'warranty_lookup_url' => 'Warranty Lookup URL',
'update' => 'Обновяване на производител', 'update' => 'Обновяване на производител',
'url' => 'URL адрес', 'url' => 'URL адрес',

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Възстановяване от архив', 'backups_restoring' => 'Възстановяване от архив',
'backups_upload' => 'Качване на архив', 'backups_upload' => 'Качване на архив',
'backups_path' => 'Архивите на сървъра са записани в <code>:path</code>', 'backups_path' => 'Архивите на сървъра са записани в <code>:path</code>',
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.',
'backups_large' => 'Много големите архиви може да не могат да се възстановят поради изтичане на времето на сесията и ще трябва да се възстановят ръчно през команден ред. ', 'backups_large' => 'Много големите архиви може да не могат да се възстановят поради изтичане на времето на сесията и ще трябва да се възстановят ръчно през команден ред. ',
'barcode_settings' => 'Настройки на баркод', 'barcode_settings' => 'Настройки на баркод',
@ -86,6 +86,8 @@ return [
'ldap_settings' => 'LDAP настройки', 'ldap_settings' => 'LDAP настройки',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_client_tls_key' => 'LDAP Client-Side TLS key', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key',
'ldap_location' => 'LDAP Location',
'ldap_location_help' => 'The Ldap Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Въведете валидни LDAP потребител и парола от базовия DN, който указахте по-горе, за да тествате коректната конфигурация. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.', 'ldap_login_test_help' => 'Въведете валидни LDAP потребител и парола от базовия DN, който указахте по-горе, за да тествате коректната конфигурация. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.',
'ldap_login_sync_help' => 'Това единствено проверява дали LDAP може да се синхронизира успешно. Ако вашата LDAP заявка за оторизация не е коректна е възможно потребителите да не могат да влязат. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.', 'ldap_login_sync_help' => 'Това единствено проверява дали LDAP може да се синхронизира успешно. Ако вашата LDAP заявка за оторизация не е коректна е възможно потребителите да не могат да влязат. НЕОБХОДИМО Е ДА ЗАПИШЕТЕ LDAP НАСТРОЙКИТЕ ПРЕДИ ТОВА.',
'ldap_manager' => 'LDAP Manager', 'ldap_manager' => 'LDAP Manager',
@ -328,4 +330,9 @@ return [
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'ldap_settings_link' => 'LDAP Settings Page', 'ldap_settings_link' => 'LDAP Settings Page',
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration', 'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization&apos;s <strong><a href="https://console.cloud.google.com/" target="_blank">Google developer console <i class="fa fa-external-link" aria-hidden="true"></i></a></strong>.',
'google_login' => 'Google Workspace Login Settings',
'enable_google_login' => 'Enable users to login with Google Workspace',
'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ',
]; ];

View file

@ -6,7 +6,7 @@ return array(
'declined' => 'Активът беше отказан.', 'declined' => 'Активът беше отказан.',
'bulk_manager_warn' => 'Вашите потребителски профили бяха обновени успешно, обаче вашето управителско вписване не беше запазено, защото управителят, които сте избрали бе в списъка с потребителски профили за промяна и потребителите не могат да бъдат свои управители. Моля изберете вашите потребителски профили отново, с изключение на управителя.', 'bulk_manager_warn' => 'Вашите потребителски профили бяха обновени успешно, обаче вашето управителско вписване не беше запазено, защото управителят, които сте избрали бе в списъка с потребителски профили за промяна и потребителите не могат да бъдат свои управители. Моля изберете вашите потребителски профили отново, с изключение на управителя.',
'user_exists' => 'Потребителят вече съществува!', 'user_exists' => 'Потребителят вече съществува!',
'user_not_found' => 'Потребител [:id] не съществува.', 'user_not_found' => 'User does not exist.',
'user_login_required' => 'Полето за вход е задължително', 'user_login_required' => 'Полето за вход е задължително',
'user_password_required' => 'Паролата е задължителна.', 'user_password_required' => 'Паролата е задължителна.',
'insufficient_permissions' => 'Нямате необходимите права.', 'insufficient_permissions' => 'Нямате необходимите права.',

View file

@ -12,5 +12,8 @@ return [
'remember_me' => 'Запомни ме', 'remember_me' => 'Запомни ме',
'username_help_top' => 'Въведете вашето <strong>потребителско име</strong> за да получите линк за смяна на парола.', 'username_help_top' => 'Въведете вашето <strong>потребителско име</strong> за да получите линк за смяна на парола.',
'username_help_bottom' => 'Вашето потребителско име и е-майл адрес <em>може да</em> са еднакви или да не са, зависимост от вашата конфигурация. Ако не помните вашето потребителско име се свържете с Администратора. <br><br><strong>Потребители които нямат въведен е-майл адрес няма да получат линк за смяна на парола.</strong> ', 'username_help_bottom' => 'Вашето потребителско име и е-майл адрес <em>може да</em> са еднакви или да не са, зависимост от вашата конфигурация. Ако не помните вашето потребителско име се свържете с Администратора. <br><br><strong>Потребители които нямат въведен е-майл адрес няма да получат линк за смяна на парола.</strong> ',
]; 'google_login' => 'Or login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.',
];

View file

@ -92,6 +92,7 @@ return [
'debug_warning_text' => 'Това приложение се изпълнява в режим на производство с разрешено отстраняване на грешки. Това може да изложи чувствителни данни, ако приложението ви е достъпно за външния свят. Забранете режим отстраняване на грешки чрез задаване на стойността <code>APP_DEBUF</code> <code>.env</code> във файла <code>false</code>.', 'debug_warning_text' => 'Това приложение се изпълнява в режим на производство с разрешено отстраняване на грешки. Това може да изложи чувствителни данни, ако приложението ви е достъпно за външния свят. Забранете режим отстраняване на грешки чрез задаване на стойността <code>APP_DEBUF</code> <code>.env</code> във файла <code>false</code>.',
'delete' => 'Изтриване', 'delete' => 'Изтриване',
'delete_confirm' => 'Сигурни ли сте, че желаете изтриването на :item?', 'delete_confirm' => 'Сигурни ли сте, че желаете изтриването на :item?',
'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.',
'deleted' => 'Изтрито', 'deleted' => 'Изтрито',
'delete_seats' => 'Изтрити работни места за лиценз', 'delete_seats' => 'Изтрити работни места за лиценз',
'deletion_failed' => 'Deletion failed', 'deletion_failed' => 'Deletion failed',
@ -439,4 +440,13 @@ return [
'setup_migration_output' => 'Migration output:', 'setup_migration_output' => 'Migration output:',
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.',
'confirm' => 'Confirm',
'autoassign_licenses' => 'Auto-Assign Licenses',
'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.',
'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)',
'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.',
'modal_confirm_generic' => 'Are you sure?',
'cannot_be_deleted' => 'This item cannot be deleted',
'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.',
]; ];

View file

@ -74,6 +74,7 @@ return [
'your_credentials' => 'Вашите идентификационни данни за Snipe-IT', 'your_credentials' => 'Вашите идентификационни данни за Snipe-IT',
'Accessory_Checkin_Notification' => 'Аксесоарат е вписан', 'Accessory_Checkin_Notification' => 'Аксесоарат е вписан',
'Asset_Checkin_Notification' => 'Актива е вписан', 'Asset_Checkin_Notification' => 'Актива е вписан',
'Asset_Checkout_Notification' => 'Asset checked out',
'License_Checkin_Notification' => 'Лиценза е вписан', 'License_Checkin_Notification' => 'Лиценза е вписан',
'Expected_Checkin_Report' => 'Очакван рапорт за вписване на актив', 'Expected_Checkin_Report' => 'Очакван рапорт за вписване на актив',
'Expected_Checkin_Notification' => 'Напомняне: :name крайната дата за вписване наближава', 'Expected_Checkin_Notification' => 'Напомняне: :name крайната дата за вписване наближава',

View file

@ -67,6 +67,8 @@ return [
'array' => 'Атрибутът: трябва да има поне: min елементи.', 'array' => 'Атрибутът: трябва да има поне: min елементи.',
], ],
'starts_with' => 'The :attribute must start with one of the following: :values.', 'starts_with' => 'The :attribute must start with one of the following: :values.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'not_in' => 'Избраният :attribute е невалиден.', 'not_in' => 'Избраният :attribute е невалиден.',
'numeric' => ':attribute трябва да бъде число.', 'numeric' => ':attribute трябва да бъде число.',
'present' => 'Полето на атрибута трябва да е налице.', 'present' => 'Полето на атрибута трябва да е налице.',

View file

@ -17,5 +17,6 @@ return array(
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.', 'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.', 'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
'clone' => 'Clone Accessory', 'clone' => 'Clone Accessory',
'delete_disabled' => 'This accessory cannot be deleted yet because some items are still checked out.',
); );

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Component was not checked out, please try again', 'error' => 'Component was not checked out, please try again',
'success' => 'Component checked out successfully.', 'success' => 'Component checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Consumable was not checked out, please try again', 'error' => 'Consumable was not checked out, please try again',
'success' => 'Consumable checked out successfully.', 'success' => 'Consumable checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -49,4 +49,6 @@ return [
'unique' => 'Unique', 'unique' => 'Unique',
'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page', 'display_in_user_view' => 'Allow the checked out user to view these values in their View Assigned Assets page',
'display_in_user_view_table' => 'Visible to User', 'display_in_user_view_table' => 'Visible to User',
'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset',
'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets',
]; ];

View file

@ -23,6 +23,7 @@ return [
'restore' => 'Restore Asset', 'restore' => 'Restore Asset',
'pending' => 'Pending', 'pending' => 'Pending',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.',
'view' => 'View Asset', 'view' => 'View Asset',
'csv_error' => 'You have an error in your CSV file:', 'csv_error' => 'You have an error in your CSV file:',
'import_text' => ' 'import_text' => '

View file

@ -8,6 +8,7 @@ return [
'change' => 'In/Out', 'change' => 'In/Out',
'checkout_date' => 'Checkout Date', 'checkout_date' => 'Checkout Date',
'checkoutto' => 'Checked Out', 'checkoutto' => 'Checked Out',
'components_cost' => 'Total Components Cost',
'current_value' => 'Current Value', 'current_value' => 'Current Value',
'diff' => 'Diff', 'diff' => 'Diff',
'dl_csv' => 'Download CSV', 'dl_csv' => 'Download CSV',

View file

@ -1,8 +1,8 @@
<?php <?php
return array( return array(
'about_licenses_title' => 'About Licenses', 'about_licenses_title' => 'About Licenses',
'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals', 'about_licenses' => 'Licenses are used to track software. They have a specified number of seats that can be checked out to individuals',
'checkin' => 'Checkin License Seat', 'checkin' => 'Checkin License Seat',
'checkout_history' => 'Checkout History', 'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat', 'checkout' => 'Checkout License Seat',
@ -18,4 +18,30 @@ return array(
'software_licenses' => 'Software Licenses', 'software_licenses' => 'Software Licenses',
'user' => 'User', 'user' => 'User',
'view' => 'View License', 'view' => 'View License',
'delete_disabled' => 'This license cannot be deleted yet because some seats are still checked out.',
'bulk' =>
[
'checkin_all' => [
'button' => 'Checkin All Seats',
'modal' => 'This will action checkin one seat. | This action will checkin all :checkedout_seats_count seats for this license.',
'enabled_tooltip' => 'Checkin ALL seats for this license from both users and assets',
'disabled_tooltip' => 'This is disabled because there are no seats currently checked out',
'success' => 'License successfully checked in! | All licenses were successfully checked in!',
'log_msg' => 'Checked in via bulk license checkout in license GUI',
],
'checkout_all' => [
'button' => 'Checkout All Seats',
'modal' => 'This action will checkout one seat to the first available user. | This action will checkout all :available_seats_count seats to the first available users. A user is considered available for this seat if they do not already have this license checked out to them, and the Auto-Assign License property is enabled on their user account.',
'enabled_tooltip' => 'Checkout ALL seats (or as many as are available) to ALL users',
'disabled_tooltip' => 'This is disabled because there are no seats currently available',
'success' => 'License successfully checked out! | :count licenses were successfully checked out!',
'error_no_seats' => 'There are no remaining seats left for this license.',
'warn_not_enough_seats' => ':count users were assigned this license, but we ran out of available license seats.',
'warn_no_avail_users' => 'Nothing to do. There are no users who do not already have this license assigned to them.',
'log_msg' => 'Checked out via bulk license checkout in license GUI',
],
],
); );

View file

@ -2,6 +2,7 @@
return array( return array(
'support_url_help' => 'Use <code>{LOCALE}</code> and <code>{SERIAL}</code> in your URL as variables to have those values auto-populate when viewing assets.',
'does_not_exist' => 'Manufacturer does not exist.', 'does_not_exist' => 'Manufacturer does not exist.',
'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ', 'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ',

View file

@ -10,6 +10,7 @@ return array(
'support_email' => 'Support Email', 'support_email' => 'Support Email',
'support_phone' => 'Support Phone', 'support_phone' => 'Support Phone',
'support_url' => 'Support URL', 'support_url' => 'Support URL',
'warranty_lookup_url' => 'Warranty Lookup URL',
'update' => 'Update Manufacturer', 'update' => 'Update Manufacturer',
'url' => 'URL', 'url' => 'URL',

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Restoring from Backup', 'backups_restoring' => 'Restoring from Backup',
'backups_upload' => 'Upload Backup', 'backups_upload' => 'Upload Backup',
'backups_path' => 'Backups on the server are stored in <code>:path</code>', 'backups_path' => 'Backups on the server are stored in <code>:path</code>',
'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.', 'backups_logged_out' => 'All existing users, including you, will be logged out once your restore is complete.',
'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ', 'backups_large' => 'Very large backups may time out on the restore attempt and may still need to be run via command line. ',
'barcode_settings' => 'Barcode Settings', 'barcode_settings' => 'Barcode Settings',
@ -86,6 +86,8 @@ return [
'ldap_settings' => 'LDAP Settings', 'ldap_settings' => 'LDAP Settings',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate and Key for LDAP connections are usually only useful in Google Workspace configurations with "Secure LDAP." Both are required.',
'ldap_client_tls_key' => 'LDAP Client-Side TLS key', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key',
'ldap_location' => 'LDAP Location',
'ldap_location_help' => 'The Ldap Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.', 'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
'ldap_manager' => 'LDAP Manager', 'ldap_manager' => 'LDAP Manager',
@ -328,4 +330,9 @@ return [
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'ldap_settings_link' => 'LDAP Settings Page', 'ldap_settings_link' => 'LDAP Settings Page',
'slack_test' => 'Test <i class="fab fa-slack"></i> Integration', 'slack_test' => 'Test <i class="fab fa-slack"></i> Integration',
'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization&apos;s <strong><a href="https://console.cloud.google.com/" target="_blank">Google developer console <i class="fa fa-external-link" aria-hidden="true"></i></a></strong>.',
'google_login' => 'Google Workspace Login Settings',
'enable_google_login' => 'Enable users to login with Google Workspace',
'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ',
]; ];

View file

@ -6,7 +6,7 @@ return array(
'declined' => 'You have successfully declined this asset.', 'declined' => 'You have successfully declined this asset.',
'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.', 'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.',
'user_exists' => 'User already exists!', 'user_exists' => 'User already exists!',
'user_not_found' => 'User [:id] does not exist.', 'user_not_found' => 'User does not exist.',
'user_login_required' => 'The login field is required', 'user_login_required' => 'The login field is required',
'user_password_required' => 'The password is required.', 'user_password_required' => 'The password is required.',
'insufficient_permissions' => 'Insufficient Permissions.', 'insufficient_permissions' => 'Insufficient Permissions.',

View file

@ -12,5 +12,8 @@ return [
'remember_me' => 'Remember Me', 'remember_me' => 'Remember Me',
'username_help_top' => 'Enter your <strong>username</strong> to be emailed a password reset link.', 'username_help_top' => 'Enter your <strong>username</strong> to be emailed a password reset link.',
'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ', 'username_help_bottom' => 'Your username and email address <em>may</em> be the same, but may not be, depending on your configuration. If you cannot remember your username, contact your administrator. <br><br><strong>Usernames without an associated email address will not be emailed a password reset link.</strong> ',
]; 'google_login' => 'Or login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.',
];

View file

@ -92,6 +92,7 @@ return [
'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the <code>APP_DEBUG</code> value in your <code>.env</code> file to <code>false</code>.', 'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the <code>APP_DEBUG</code> value in your <code>.env</code> file to <code>false</code>.',
'delete' => 'Suprimeix', 'delete' => 'Suprimeix',
'delete_confirm' => 'Are you sure you wish to delete :item?', 'delete_confirm' => 'Are you sure you wish to delete :item?',
'delete_confirm_no_undo' => 'Are you sure you wish to delete :item? This can not be undone.',
'deleted' => 'S\'ha suprimit', 'deleted' => 'S\'ha suprimit',
'delete_seats' => 'Deleted Seats', 'delete_seats' => 'Deleted Seats',
'deletion_failed' => 'Deletion failed', 'deletion_failed' => 'Deletion failed',
@ -439,4 +440,13 @@ return [
'setup_migration_output' => 'Migration output:', 'setup_migration_output' => 'Migration output:',
'setup_migration_create_user' => 'Next: Create User', 'setup_migration_create_user' => 'Next: Create User',
'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.',
'confirm' => 'Confirm',
'autoassign_licenses' => 'Auto-Assign Licenses',
'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.',
'autoassign_licenses_help_long' => 'This allows a user to be have licenses assigned via the bulk-assign license UI or cli tools. (For example, you might not want contractors to be auto-assigned a license you would provide to only staff members. You can still individually assign licenses to those users, but they will not be included in the Checkout License to All Users functions.)',
'no_autoassign_licenses_help' => 'Do not include user for bulk-assigning through the license UI or cli tools.',
'modal_confirm_generic' => 'Are you sure?',
'cannot_be_deleted' => 'This item cannot be deleted',
'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.',
]; ];

View file

@ -75,6 +75,7 @@ return [
'your_credentials' => 'Your Snipe-IT credentials', 'your_credentials' => 'Your Snipe-IT credentials',
'Accessory_Checkin_Notification' => 'Accessory checked in', 'Accessory_Checkin_Notification' => 'Accessory checked in',
'Asset_Checkin_Notification' => 'Asset checked in', 'Asset_Checkin_Notification' => 'Asset checked in',
'Asset_Checkout_Notification' => 'Asset checked out',
'License_Checkin_Notification' => 'License checked in', 'License_Checkin_Notification' => 'License checked in',
'Expected_Checkin_Report' => 'Expected asset checkin report', 'Expected_Checkin_Report' => 'Expected asset checkin report',
'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching', 'Expected_Checkin_Notification' => 'Reminder: :name checkin deadline approaching',

View file

@ -67,6 +67,8 @@ return [
'array' => 'The :attribute must have at least :min items.', 'array' => 'The :attribute must have at least :min items.',
], ],
'starts_with' => 'The :attribute must start with one of the following: :values.', 'starts_with' => 'The :attribute must start with one of the following: :values.',
'ends_with' => 'The :attribute must end with one of the following: :values.',
'not_in' => 'The selected :attribute is invalid.', 'not_in' => 'The selected :attribute is invalid.',
'numeric' => 'The :attribute must be a number.', 'numeric' => 'The :attribute must be a number.',
'present' => 'The :attribute field must be present.', 'present' => 'The :attribute field must be present.',

View file

@ -18,5 +18,6 @@ return array(
'use_default_eula_disabled' => '<del>Použít výchozí EULA.</del> 'use_default_eula_disabled' => '<del>Použít výchozí EULA.</del>
Žádná výchozí EULA nenastavena. Zadejte novou v nastevení.', Žádná výchozí EULA nenastavena. Zadejte novou v nastevení.',
'clone' => 'Clone Accessory', 'clone' => 'Clone Accessory',
'delete_disabled' => 'Toto příslušenství ještě nelze odstranit, protože některé jeho položky jsou stále vydány.',
); );

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Díl se nepodařilo předat, zkuste to prosím znovu', 'error' => 'Díl se nepodařilo předat, zkuste to prosím znovu',
'success' => 'Díl byl v pořádku předán.', 'success' => 'Díl byl v pořádku předán.',
'user_does_not_exist' => 'Neplatný uživatel. Zkuste to prosím znovu.' 'user_does_not_exist' => 'Neplatný uživatel. Zkuste to prosím znovu.',
'unavailable' => 'Not enough components remaining: :remaining remaining, :requested requested ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -23,7 +23,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Spotřební materiál se nepodařilo přidělit, pokuste se o to znovu', 'error' => 'Spotřební materiál se nepodařilo přidělit, pokuste se o to znovu',
'success' => 'Spotřební materiál byl v pořádku přidělen.', 'success' => 'Spotřební materiál byl v pořádku přidělen.',
'user_does_not_exist' => 'Tento uživatel není platný, zkuste to prosím jinak.' 'user_does_not_exist' => 'Tento uživatel není platný, zkuste to prosím jinak.',
'unavailable' => 'There are not enough consumables for this checkout. Please check the quantity left. ',
), ),
'checkin' => array( 'checkin' => array(

View file

@ -49,4 +49,6 @@ return [
'unique' => 'Unikátní', 'unique' => 'Unikátní',
'display_in_user_view' => 'Povolit uživateli vyhledat tyto hodnoty na stránce Zobrazit přiřazené položky', 'display_in_user_view' => 'Povolit uživateli vyhledat tyto hodnoty na stránce Zobrazit přiřazené položky',
'display_in_user_view_table' => 'Viditelné pro uživatele', 'display_in_user_view_table' => 'Viditelné pro uživatele',
'auto_add_to_fieldsets' => 'Automatically add this to every new fieldset',
'add_to_preexisting_fieldsets' => 'Add to any existing fieldsets',
]; ];

View file

@ -23,6 +23,7 @@ return [
'restore' => 'Obnovit zařízení', 'restore' => 'Obnovit zařízení',
'pending' => 'Čekající', 'pending' => 'Čekající',
'undeployable' => 'Nelze vyskladnit', 'undeployable' => 'Nelze vyskladnit',
'undeployable_tooltip' => 'This asset has a status label that is undeployable and cannot be checked out at this time.',
'view' => 'Zobrazit majetek', 'view' => 'Zobrazit majetek',
'csv_error' => 'Máte chybu v souboru CSV:', 'csv_error' => 'Máte chybu v souboru CSV:',
'import_text' => ' 'import_text' => '

View file

@ -8,6 +8,7 @@ return [
'change' => 'Příjem/Výdej', 'change' => 'Příjem/Výdej',
'checkout_date' => 'Datum vydání', 'checkout_date' => 'Datum vydání',
'checkoutto' => 'Vydané', 'checkoutto' => 'Vydané',
'components_cost' => 'Total Components Cost',
'current_value' => 'Aktuální hodnota', 'current_value' => 'Aktuální hodnota',
'diff' => 'Rozdíl', 'diff' => 'Rozdíl',
'dl_csv' => 'Stáhnout CSV', 'dl_csv' => 'Stáhnout CSV',

View file

@ -1,8 +1,8 @@
<?php <?php
return array( return array(
'about_licenses_title' => 'O licencích', 'about_licenses_title' => 'O licencích',
'about_licenses' => 'Licence jsou používány ke sledování softwaru. Mají stanovený počet uživatelských licencí, které mohou být přiděleny jednotlivcům', 'about_licenses' => 'Licence jsou používány ke sledování softwaru. Mají stanovený počet uživatelských licencí, které mohou být přiděleny jednotlivcům',
'checkin' => 'Převzít jednu licenci', 'checkin' => 'Převzít jednu licenci',
'checkout_history' => 'Historie', 'checkout_history' => 'Historie',
'checkout' => 'Předat jednu licenci', 'checkout' => 'Předat jednu licenci',
@ -18,4 +18,30 @@ return array(
'software_licenses' => 'Softwarové licence', 'software_licenses' => 'Softwarové licence',
'user' => 'Uživatel', 'user' => 'Uživatel',
'view' => 'Ukaž licenci', 'view' => 'Ukaž licenci',
'delete_disabled' => 'Tuto položku zatím nelze odstranit, neboť jsou vydány některé license.',
'bulk' =>
[
'checkin_all' => [
'button' => 'Hromadně převzít všechny licence',
'modal' => 'Tímto převezmete jednu licenci. | Tímto převezmete všech :checkedout_seats_count licencí.',
'enabled_tooltip' => 'Převzít všechny licence vydané jak uživatelům, tak i zařízením',
'disabled_tooltip' => 'To nelze provést, neboť není vydaná žádná licence',
'success' => 'Lincece úspěšně převzata! | Licence úspěšně převzaty!',
'log_msg' => 'Převzato pomocí hromadného zpracování licencí',
],
'checkout_all' => [
'button' => 'Vydat všchny licence',
'modal' => 'Tímto vydáte jednu licenci prvnímu dostupnému uživateli. | Tímto vydáte všech :available_seats_count licencí dostupným uživatelům, přičemž dostupný uživatel je takový, který ještě nepřevzal tuto licenci a přitom má zapnutou volbu automatického přiřazování licencí.',
'enabled_tooltip' => 'Vydat všechny (dostupné) licence všem uživatelům',
'disabled_tooltip' => 'Nelze provést, neboť nejsou volné žádné licence',
'success' => 'Licence byla úspěšně vydána! | :count licenses licencí bylo úspěšně vydáno!',
'error_no_seats' => 'Nejsou žádné volné (nevydané) licence.',
'warn_not_enough_seats' => 'Licence byly přiřazeny :count uživatelům, ale již nezbyly žádné volné.',
'warn_no_avail_users' => 'Nelze provést, neboť již nezbývají žádní uživatelé, kteří tuto licenci nemají přiřazenu.',
'log_msg' => 'Vydáno pomocí hromadného zpracování licencí',
],
],
); );

View file

@ -2,6 +2,7 @@
return array( return array(
'support_url_help' => 'Use <code>{LOCALE}</code> and <code>{SERIAL}</code> in your URL as variables to have those values auto-populate when viewing assets.',
'does_not_exist' => 'Výrobce neexistuje.', 'does_not_exist' => 'Výrobce neexistuje.',
'assoc_users' => 'Tento výrobce je uveden minimálně u jednoho modelu a nemůže být smazán. Odstraňte výrobce z modelů a zkuste to znovu. ', 'assoc_users' => 'Tento výrobce je uveden minimálně u jednoho modelu a nemůže být smazán. Odstraňte výrobce z modelů a zkuste to znovu. ',

View file

@ -10,6 +10,7 @@ return array(
'support_email' => 'Emailová podpora', 'support_email' => 'Emailová podpora',
'support_phone' => 'Telefonní podpora', 'support_phone' => 'Telefonní podpora',
'support_url' => 'URL podpory', 'support_url' => 'URL podpory',
'warranty_lookup_url' => 'Warranty Lookup URL',
'update' => 'Upravit Výrobce', 'update' => 'Upravit Výrobce',
'url' => 'URL', 'url' => 'URL',

View file

@ -32,7 +32,7 @@ return [
'backups_restoring' => 'Obnovit ze zálohy', 'backups_restoring' => 'Obnovit ze zálohy',
'backups_upload' => 'Nahrát zálohu', 'backups_upload' => 'Nahrát zálohu',
'backups_path' => 'Zálohy jsou uloženy v <code>:path</code>', 'backups_path' => 'Zálohy jsou uloženy v <code>:path</code>',
'backups_restore_warning' => 'Použijte tlačítko obnovení <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> k obnovení předchozí zálohy. (Toto v současné době nefunguje se S3 souborovým systémem nebo Dockerem.<br><br>Vaše <strong>celá databáze :app_name a všechny nahrané soubory budou zcela nahrazeny</strong> tím, co je v záloze. ', 'backups_restore_warning' => 'Use the restore button <small><span class="btn btn-xs btn-warning"><i class="text-white fas fa-retweet" aria-hidden="true"></i></span></small> to restore from a previous backup. (This does not currently work with S3 file storage or Docker.)<br><br>Your <strong>entire :app_name database and any uploaded files will be completely replaced</strong> by what\'s in the backup file. ',
'backups_logged_out' => 'Všichni stávající uživatelé, včetně vás, budou odhlášeni po dokončení obnovy.', 'backups_logged_out' => 'Všichni stávající uživatelé, včetně vás, budou odhlášeni po dokončení obnovy.',
'backups_large' => 'Velmi velké zálohy mohou při obnovování způsobit time out chybu a možná budou muset být spuštěny přes příkazový řádek. ', 'backups_large' => 'Velmi velké zálohy mohou při obnovování způsobit time out chybu a možná budou muset být spuštěny přes příkazový řádek. ',
'barcode_settings' => 'Nastavení čárového kódu', 'barcode_settings' => 'Nastavení čárového kódu',
@ -86,6 +86,8 @@ return [
'ldap_settings' => 'Nastavení LDAP', 'ldap_settings' => 'Nastavení LDAP',
'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate a klíč pro LDAP jsou obvykle užitečné pouze v konfiguracích Google Workspace společně s "Secure LDAP." Oba jsou vyžadovány.', 'ldap_client_tls_cert_help' => 'Client-Side TLS Certificate a klíč pro LDAP jsou obvykle užitečné pouze v konfiguracích Google Workspace společně s "Secure LDAP." Oba jsou vyžadovány.',
'ldap_client_tls_key' => 'LDAP Client-Side TLS key', 'ldap_client_tls_key' => 'LDAP Client-Side TLS key',
'ldap_location' => 'LDAP Location',
'ldap_location_help' => 'The Ldap Location field should be used if <strong>an OU is not being used in the Base Bind DN.</strong> Leave this blank if an OU search is being used.',
'ldap_login_test_help' => 'Zadejte platné LDAP uživatelské jméno a heslo ze základu rozlišeného názvu který jste určili výše a vyzkoušejte zda je LDAP přihlašování správně nastavené. NEJPRVE JE TŘEBA ULOŽIT ZMĚNĚNÉ NASTAVENÍ LDAP.', 'ldap_login_test_help' => 'Zadejte platné LDAP uživatelské jméno a heslo ze základu rozlišeného názvu který jste určili výše a vyzkoušejte zda je LDAP přihlašování správně nastavené. NEJPRVE JE TŘEBA ULOŽIT ZMĚNĚNÉ NASTAVENÍ LDAP.',
'ldap_login_sync_help' => 'Otestujte, že LDAP může správně synchronizovat. Pokud ověřovací LDAP dotaz není správný, uživatelé se nemusí být schopni přihlásit. JE NUTNÉ NEJPRVE NEJDŘÍVE ULOŽIT NASTAVENÍ LDAP POKUD BYLO ZMĚNĚNO.', 'ldap_login_sync_help' => 'Otestujte, že LDAP může správně synchronizovat. Pokud ověřovací LDAP dotaz není správný, uživatelé se nemusí být schopni přihlásit. JE NUTNÉ NEJPRVE NEJDŘÍVE ULOŽIT NASTAVENÍ LDAP POKUD BYLO ZMĚNĚNO.',
'ldap_manager' => 'LDAP Manager', 'ldap_manager' => 'LDAP Manager',
@ -328,4 +330,9 @@ return [
'setup_migration_create_user' => 'Další: Vytvořit uživatele', 'setup_migration_create_user' => 'Další: Vytvořit uživatele',
'ldap_settings_link' => 'Nastavení LDAP', 'ldap_settings_link' => 'Nastavení LDAP',
'slack_test' => 'Test <i class="fab fa-slack"></i> Integrace', 'slack_test' => 'Test <i class="fab fa-slack"></i> Integrace',
'google_callback_help' => 'This should be entered as the callback URL in your Google OAuth app settings in your organization&apos;s <strong><a href="https://console.cloud.google.com/" target="_blank">Google developer console <i class="fa fa-external-link" aria-hidden="true"></i></a></strong>.',
'google_login' => 'Google Workspace Login Settings',
'enable_google_login' => 'Enable users to login with Google Workspace',
'enable_google_login_help' => 'Users will not be automatically provisioned. They must have an existing account here AND in Google Workspace, and their username here must match their Google Workspace email address. ',
]; ];

View file

@ -6,7 +6,7 @@ return array(
'declined' => 'Úspěšně jste odmítli tento majetek.', 'declined' => 'Úspěšně jste odmítli tento majetek.',
'bulk_manager_warn' => 'Uživatelé byli úspěšně aktualizováni, položka správce však nebyla uložena, protože správce, který jste si vybrali, byl také v seznamu uživatelů, který má být upraven, a uživatelé nemusí být jejich vlastní správce. Zvolte své uživatele znovu, kromě správce.', 'bulk_manager_warn' => 'Uživatelé byli úspěšně aktualizováni, položka správce však nebyla uložena, protože správce, který jste si vybrali, byl také v seznamu uživatelů, který má být upraven, a uživatelé nemusí být jejich vlastní správce. Zvolte své uživatele znovu, kromě správce.',
'user_exists' => 'Uživatel již existuje!', 'user_exists' => 'Uživatel již existuje!',
'user_not_found' => 'Uživatel [:id] neexistuje.', 'user_not_found' => 'User does not exist.',
'user_login_required' => 'Přihlašovací pole je povinné', 'user_login_required' => 'Přihlašovací pole je povinné',
'user_password_required' => 'Je vyžadováno heslo.', 'user_password_required' => 'Je vyžadováno heslo.',
'insufficient_permissions' => 'Nedostatečná oprávnění.', 'insufficient_permissions' => 'Nedostatečná oprávnění.',

View file

@ -12,5 +12,8 @@ return [
'remember_me' => 'Pamatovat si mě', 'remember_me' => 'Pamatovat si mě',
'username_help_top' => 'Zadejte své <strong>uživatelské jméno</strong> pro zaslání e-mailu s odkazem pro obnovení hesla.', 'username_help_top' => 'Zadejte své <strong>uživatelské jméno</strong> pro zaslání e-mailu s odkazem pro obnovení hesla.',
'username_help_bottom' => 'Vaše uživatelské jméno a e-mailová adresa <em>mohou</em> být stejná, ale nemusí být, záleží na Vašem nastavení. Pokud si nepamatujete Vaše uživatelské jméno, kontaktujte Vašeho správce. <br><br><strong>Uživatelským jménům bez přidružené e-mailové adresy nebude zaslán odkaz pro obnovu hesla.</strong> ', 'username_help_bottom' => 'Vaše uživatelské jméno a e-mailová adresa <em>mohou</em> být stejná, ale nemusí být, záleží na Vašem nastavení. Pokud si nepamatujete Vaše uživatelské jméno, kontaktujte Vašeho správce. <br><br><strong>Uživatelským jménům bez přidružené e-mailové adresy nebude zaslán odkaz pro obnovu hesla.</strong> ',
]; 'google_login' => 'Or login with Google Workspace',
'google_login_failed' => 'Google Login failed, please try again.',
];

View file

@ -92,6 +92,7 @@ return [
'debug_warning_text' => 'Tato aplikace běží ve výrobním režimu s povoleným laděním. To znamená že citlivá data mohou být přístupná vnějšímu světu. Deaktivujte režim ladění nastavením hodnoty <code>APP_DEBUG</code> v souboru <code>.env</code> na <code>false</code>.', 'debug_warning_text' => 'Tato aplikace běží ve výrobním režimu s povoleným laděním. To znamená že citlivá data mohou být přístupná vnějšímu světu. Deaktivujte režim ladění nastavením hodnoty <code>APP_DEBUG</code> v souboru <code>.env</code> na <code>false</code>.',
'delete' => 'Odstranit', 'delete' => 'Odstranit',
'delete_confirm' => 'Opravdu chcete smazat :item?', 'delete_confirm' => 'Opravdu chcete smazat :item?',
'delete_confirm_no_undo' => 'Opravdu chcete odstranit :item? Tuto operaci nelze zvrátit.',
'deleted' => 'Odstraněno', 'deleted' => 'Odstraněno',
'delete_seats' => 'Vymazaná licenční místa', 'delete_seats' => 'Vymazaná licenční místa',
'deletion_failed' => 'Odstranění se nezdařilo', 'deletion_failed' => 'Odstranění se nezdařilo',
@ -439,4 +440,13 @@ return [
'setup_migration_output' => 'Výstup migrace:', 'setup_migration_output' => 'Výstup migrace:',
'setup_migration_create_user' => 'Další: Založení uživatele', 'setup_migration_create_user' => 'Další: Založení uživatele',
'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.', 'importer_generic_error' => 'Your file import is complete, but we did receive an error. This is usually caused by third-party API throttling from a notification webhook (such as Slack) and would not have interfered with the import itself, but you should confirm this.',
'confirm' => 'Potvrdit',
'autoassign_licenses' => 'Automatické přiřazení licencí',
'autoassign_licenses_help' => 'Allow this user to have licenses assigned via the bulk-assign license UI or cli tools.',
'autoassign_licenses_help_long' => 'Povolí uživateli získávat licence skze hromadnou správu licencí, ať již GUI or CLI. Například pokud si nepřejete, aby externisti nedostávali automaticky licence, náležící pouze zaměstnancům. Licenci jim můžete i nadále přiřazovat ručně, pouze nebudou zahrnuti do hromadného zpracování.',
'no_autoassign_licenses_help' => 'Nezahrnovat uživatele do hromadného zpracování licencí.',
'modal_confirm_generic' => 'Jste si jistí?',
'cannot_be_deleted' => 'Položka nemůže být odstraněna',
'undeployable_tooltip' => 'This item cannot be checked out. Check the quantity remaining.',
]; ];

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